Trình cắt & cắt âm thanh
Cắt và xén các tệp âm thanh đến thời lượng chính xác bạn muốn. Đặt điểm bắt đầu và kết thúc, xem trước và xuất. Không gửi, không đăng ký.
MP3, WAV, OGG, AAC, FLAC, M4A
Cách thức hoạt động
- Tải tệp âm thanh: chọn một tệp MP3, WAV, OGG, FLAC hoặc M4A từ thiết bị của bạn.
- Đặt điểm bắt đầu và kết thúc: kéo các tay cầm trên dạng sóng hoặc nhập các timestamp chính xác để đánh dấu phân đoạn cần giữ lại.
- Xem trước lựa chọn: phát chỉ phân đoạn đã cắt trước khi xuất.
- Tải xuống đoạn: xuất âm thanh đã cắt vào thiết bị của bạn, không gửi đến máy chủ.
Lược sử ngắn về Web Audio API
Web Audio API là giao diện JavaScript được W3C chuẩn hóa để xử lý và tổng hợp âm thanh trong trình duyệt web. Đó là công nghệ nền tảng cho phép một trang web giải mã MP3 trong bộ nhớ, vẽ dạng sóng, định tuyến âm thanh qua các bộ lọc, hoặc phát âm tổng hợp mà không cần plugin. Nguyên mẫu đầu tiên do Chris Rogers xây dựng tại Apple, trong dự án WebKit, năm 2010. W3C Audio Working Group công bố First Public Working Draft ngày 14 tháng 12 năm 2011; sau gần một thập niên rà soát và các chu kỳ triển khai trình duyệt, W3C công bố Web Audio API thành W3C Recommendation ngày 17 tháng 6 năm 2021. Tài liệu Recommendation cảm ơn rõ ràng Chris Rogers với tư cách "cựu biên tập viên đặc tả và tác giả gốc của đặc tả này". Ba lớp làm phần lớn công việc trong mọi công cụ âm thanh phía trình duyệt: AudioContext (container cấp cao nhất), AudioBuffer (một mảnh PCM âm thanh đã giải mã trong bộ nhớ, dữ liệu từng kênh phơi bày dưới dạng Float32Array) và AudioBufferSourceNode (một nút phát một-lần-dùng). Mô hình đồ thị đầy đủ hỗ trợ nhiều loại nút khác (gain, filter, panner, analyser, convolver, delay), có thể dựng từ máy chỉnh dây guitar đến synthesizer. Trình cắt này chỉ dùng phần giải mã (AudioContext.decodeAudioData()) cho việc hiển thị dạng sóng; việc cắt thực sự đi qua ffmpeg.wasm.
Định dạng được hỗ trợ
WAV (1991, Microsoft + IBM) là Waveform Audio File Format, một container RIFF chứa mẫu PCM tuyến tính không nén. Một WAV chất lượng CD biểu diễn 44.100 mẫu × 2 kênh × 16 bit mỗi giây, tức khoảng 10,1 MB mỗi phút: một bài hát bốn phút ở WAV nặng khoảng 40 MB. Header kích thước chunk dữ liệu mã hóa 32 bit, giới hạn một tệp WAV ở 4 GB; ghi dài hơn cần các phần mở rộng RF64 hoặc W64. WAV là định dạng trao đổi phổ quát chính vì nó không nén, dễ parse và không có rào cản bằng sáng chế. MP3 (ISO/IEC 11172-3, 1993) là tên thông dụng của MPEG-1 Audio Layer III, phát triển tại Viện Fraunhofer ở Erlangen, Đức, với đóng góp then chốt của Karlheinz Brandenburg, Heinz Gerhäuser, Bernhard Grill, Jürgen Herre và Harald Popp. MP3 bị bằng sáng chế cản trở suốt hai thập niên; bằng sáng chế cuối cùng hết hạn ngày 16 tháng 4 năm 2017 tại Hoa Kỳ, và Fraunhofer chính thức tuyên bố kết thúc chương trình cấp phép MP3 ngày 23 tháng 4 năm 2017. Chính việc hết hạn này làm cho các trình mã hóa MP3 miễn phí không phí bản quyền (libmp3lame, lamejs) có thể triển khai không dè chừng trong công cụ trình duyệt.
AAC (ISO/IEC 13818-7, 1997) và M4A: AAC được thiết kế làm hậu duệ MP3, với chất lượng tốt hơn cùng bitrate. M4A không phải codec riêng: đó là một tệp MPEG-4 Part 14 (.mp4) chỉ mang âm thanh. Apple phổ biến phần mở rộng .m4a khi ra mắt iTunes Music Store ngày 28 tháng 4 năm 2003, với AAC ở 128 kbps làm định dạng mặc định để mua. OGG Vorbis (Xiph.Org, 2000-2002) là codec mất mát miễn phí, mở và không có bằng sáng chế, câu trả lời của Xiph cho khí hậu bằng sáng chế quanh MP3 cuối thập niên 1990. Trình mã hóa tham chiếu, libvorbis, đạt phiên bản 1.0 tháng 7 năm 2002. Wikipedia, Spotify (ban đầu), vô số game và các bản phân phối Linux nhúng Vorbis. FLAC (Free Lossless Audio Codec, Xiph.Org, 20 tháng 7 năm 2001) nén không mất mát: đầu ra giải mã giống hệt đầu vào từng bit. Mức nén điển hình 50-60% kích thước WAV nguồn. FLAC trở thành định dạng lưu trữ mặc định cho phân phối nhạc lossless (Bandcamp, Qobuz, HDtracks, Internet Archive). Opus (IETF RFC 6716, tháng 9 năm 2012) là codec hiện đại không phí bản quyền tiêu biểu, do Xiph.Org, Mozilla và Skype/Microsoft thiết kế chung; gộp codec thoại SILK của Skype với codec nhạc CELT của Xiph thành một codec duy nhất xuất sắc trên toàn dải, từ thoại 6 kbps đến nhạc stereo 510 kbps. Opus là bắt buộc triển khai trong WebRTC.
Giải mã âm thanh trong trình duyệt hoạt động như thế nào
Khi bạn thả một MP3 4 MB lên trang cắt, chuỗi sự kiện này diễn ra hoàn toàn trong trình duyệt của bạn. FileReader.readAsArrayBuffer(file) đọc các byte từ đĩa cục bộ vào một ArrayBuffer JavaScript: đó là đọc cục bộ, không phải gửi đi. Trang tạo một AudioContext (với fallback cho tiền tố WebKit cũ). audioCtx.decodeAudioData(arrayBuffer) chạy bộ giải mã âm thanh native của trình duyệt một cách bất đồng bộ (thường là codec hệ thống) và trả về AudioBuffer. AudioBuffer phơi bày getChannelData(0), trả về Float32Array các mẫu kênh trái chuẩn hóa giữa −1.0 và +1.0. Cho nguồn mono 4 phút ở 44,1 kHz, đó là khoảng 10,6 triệu số thực, tức 42 MB bộ nhớ. Thủ tục vẽ dạng sóng lấy mẫu xuống mảng này để tạo một đỉnh mỗi cột pixel của canvas. AudioContext sau đó được đóng; không còn gì tham chiếu buffer, nên bộ nhớ được thu hồi. Cho việc cắt thực sự, ffmpeg.wasm làm việc trên các byte đã mã hóa gốc trong hệ tệp ảo của nó: việc giải mã Web Audio chỉ phục vụ vẽ. Định dạng nào decodeAudioData chấp nhận tùy thuộc trình duyệt host, không phải đặc tả. Trên thực tế năm 2026: MP3 và WAV được giải mã phổ biến; OGG Vorbis hoạt động trong Chrome, Firefox và Safari gần đây; AAC/M4A trong Safari, Chrome, Edge và Firefox hiện đại; FLAC trong mọi trình duyệt lớn từ khoảng 2017; Opus trong mọi trình duyệt hiện đại.
Render dạng sóng, kỹ thuật đỉnh mỗi pixel
Vẽ dạng sóng trên khái niệm là đơn giản, nhưng dễ làm sai. Kỹ thuật chuẩn, dùng ở đây, là envelope min/max: chọn độ rộng đích theo pixel (độ rộng canvas); tính bước là samples.length / width; cho mỗi cột pixel đầu ra, duyệt qua step mẫu tương ứng để tìm tối thiểu và tối đa cục bộ; vẽ một đường thẳng đứng từ tối thiểu đến tối đa. Kết quả là vẻ ngoài envelope phản chiếu quen thuộc của mọi DAW hiện đại. Tại sao envelope min/max chứ không phải RMS hay mẫu đơn? Cách tiếp cận ngây thơ ("mỗi pixel vẽ một mẫu") làm mất chi tiết transient: một mẫu thấp có thể rơi vào pixel đáng lẽ biểu diễn transient mạnh, tạo dạng sóng phẳng đánh lừa. RMS (root-mean-square) cho đường cong loudness đúng theo cảm nhận nhưng mất thông tin đỉnh. Envelope min/max là sự thỏa hiệp thị giác thống trị giao diện DAW từ ít nhất Pro Tools và vẫn là quy ước trong wavesurfer.js, peaks.js (BBC R&D, thiết kế cho nhà báo chú thích âm thanh dài) và Audacity. Cài đặt ở đây dùng devicePixelRatio cho thang co giãn mật độ cao, để dạng sóng vẫn sắc trên màn hình Retina. Một giới hạn trung thực: getChannelData(0) chỉ trả về kênh đầu tiên, nên tệp stereo chỉ hiển thị kênh trái. Việc cắt tự thân, do ffmpeg thực hiện, giữ mọi kênh.
Toán học của một cú cắt chính xác đến mẫu
Cắt trên khái niệm là đơn giản: tạo một tệp mới chỉ chứa các mẫu giữa thời điểm t_start và thời điểm t_end của nguồn. Có hai con đường. Cách tiếp cận cấp mẫu chuyển thời gian sang chỉ số mẫu (start_frame = round(t_start × sampleRate)), cấp phát một AudioBuffer mới với độ dài end_frame − start_frame, sao chép mẫu theo từng kênh, rồi mã hóa lại: đó là điều ta làm chỉ với Web Audio API. Cắt cấp container (cái công cụ này làm qua FFmpeg) truyền -ss start -to end cho FFmpeg, FFmpeg phát luồng bitstream đã mã hóa ra bằng cách mã hóa lại qua codec đầu ra đã chọn. Cắt do FFmpeg điều phối vững hơn vì bộ mã hóa lo phần dựng frame, header và metadata; con đường thuần Web Audio đòi viết bộ mã hóa MP3 hoặc Vorbis riêng cho đầu ra, tinh tế hơn nhiều. Tốc độ lấy mẫu quan trọng: 44,1 kHz là chuẩn Compact Disc và tốc độ chủ đạo cho nhạc, được chọn để vượt qua giới hạn Nyquist của thính giác con người (~20 kHz × 2 = 40 kHz tối thiểu) và tương thích với máy ghi PAL/NTSC từng dùng để master CD đời đầu. 48 kHz là chuẩn điện ảnh, truyền hình và video số. 16 kHz là tốc độ thực tế cho nhận diện giọng nói và VoIP; 8 kHz là điện thoại cố định cổ điển. 96 kHz và 192 kHz là tốc độ độ phân giải cao. Công cụ này thừa hưởng tốc độ lấy mẫu từ đầu vào qua FFmpeg theo mặc định, giữ độ trung thực trừ phi đặc tả khác. Giao diện chấp nhận thời gian đến phần mười giây (0:03,5); FFmpeg bên trong chính xác đến mẫu, nên độ chi tiết 0,1 giây tương đương khoảng 4.410 mẫu ở 44,1 kHz, dưới ngưỡng cảm nhận của con người.
Vì sao ffmpeg.wasm thay vì lamejs
Khó khăn lịch sử lớn nhất của việc chỉnh sửa âm thanh phía trình duyệt là mã hóa MP3. Giải mã thì miễn phí: trình duyệt làm thay. Mã hóa đòi một bộ mã hóa MP3 trong JavaScript hoặc WebAssembly. Hai lựa chọn chiếm ưu thế. lamejs là port thuần JavaScript của bộ mã hóa LAME đáng kính (ban đầu của Andreas Krennmair / zhuker trên GitHub, qua dịch chuyển máy móc mã C của LAME sang JS). Ưu điểm là dấu chân nhẹ (~150 KB minify) và không phụ thuộc: chỉ cần một thẻ script, mã hóa MP3 trong năm mươi dòng code. Nhược điểm: chỉ làm MP3, API khó tính, và hiệu năng trên tệp dài kém vì là JS thông dịch chứ không phải WebAssembly đã biên dịch. ffmpeg.wasm là build WebAssembly của FFmpeg, dao đa năng phổ quát của xử lý audio/video. Ưu điểm: tính phổ quát (mọi codec FFmpeg hỗ trợ, gồm MP3, WAV, OGG, AAC, FLAC, Opus và hàng chục định dạng khó hiểu; mọi container, mọi biến đổi). Nhược điểm: kích thước (bundle WebAssembly nặng vài MB, lớn hơn nhiều so với lamejs đơn). Công cụ này dùng ffmpeg.wasm vì cung cấp ba codec đầu ra thực sự (MP3 qua libmp3lame, WAV qua pcm_s16le, OGG qua libvorbis) từ một engine chia sẻ duy nhất, với cùng bộ máy cắt cho tất cả; lamejs sẽ giới hạn đầu ra chỉ MP3. Đánh đổi: chi phí kích thước bundle ở lần ghé thăm đầu tiên.
Trường hợp dùng phổ biến
- Tạo nhạc chuông. Nhạc chuông iPhone phải dưới 30 giây; nhiều điện thoại Android giới hạn 40-60 giây. Cắt đoạn điệp khúc dễ nhận nhất của một bài hát là cách dùng kinh điển, và tôn trọng quyền riêng tư: tải bài hát có bản quyền lên một site bên thứ ba để cắt là phơi bày thật, dù hạn chế.
- Trích đoạn podcast. Lấy một đoạn 30 giây từ một tập 90 phút để quảng bá trên mạng xã hội. Dạng sóng giúp dễ tìm điểm vào và ra ở biên câu hơn nhiều so với scrub mù trong trình phát.
- Dọn ghi âm voice memo. Voice memo gần như luôn có thời gian chết ở đầu (bạn bấm, rồi nói) và cuối (bạn ngừng nói, rồi cắt). Cắt khoảng im lặng giảm kích thước tệp và cải thiện chất lượng cảm nhận.
- Trích sample nhạc cho dựng video. Một vòng lặp sáu giây làm nhạc nền cho một cảnh quay. Cắt, xuất WAV (lossless, vì bạn sẽ mã hóa lại trong video), nhập vào trình chỉnh sửa video.
- Bỏ jingle giới thiệu. Dọn một bản rip âm thanh podcast hoặc YouTube để bỏ generic chuẩn của kênh trước khi gửi đến dịch vụ chuyển thành văn bản.
- Chuẩn bị sư phạm và thuyết trình. Cắt hiệu ứng âm thanh, đoạn nhạc hoặc đoạn diễn văn để nhúng vào slide hoặc bài giảng tương tác.
Phạm vi trung thực: công cụ này không làm gì
Đây là công cụ cắt một-tệp tập trung, không phải digital audio workstation. Những việc nó không làm, mà các đối thủ phức tạp hơn xử lý: không có fade in / fade out (đoạn xuất ra bắt đầu và kết thúc đột ngột tại điểm cắt); không có nhiều rãnh hay mix (một tệp vào, một tệp cắt ra); không có hiệu ứng (không EQ, nén, chuẩn hóa, giảm nhiễu, reverb); không cắt một tệp thành nhiều đoạn trong một lượt (cho ba đoạn, bạn cắt ba lần); không chỉnh gain hay âm lượng; không phát giới hạn ở vùng đã cắt: trình phát chơi cả tệp nguồn, với đầu phát hoạt hình trên dạng sóng trong lúc phát. Cho nhiều rãnh, fade, hiệu ứng và mastering, hãy dùng Audacity (mã nguồn mở, do Dominic Mazzoni và Roger Dannenberg phát hành ngày 28 tháng 5 năm 2000 tại Carnegie Mellon, vẫn được phát triển tích cực năm 2026), Adobe Audition (thương mại) hoặc Reaper (thương mại, thời hạn dùng thử miễn phí rộng rãi). Cho cú cắt lẻ không cài đặt, công cụ này là dạng phù hợp. Định vị quyền riêng tư là chân thành: bản ghi âm là dữ liệu cá nhân, thường chứa giọng nói nhận diện được hoặc tiếng động nền của không gian riêng; tải chúng lên một "trình cắt âm thanh online miễn phí" là rủi ro thật mà kiến trúc thuần trình duyệt loại bỏ hoàn toàn.
Quyền riêng tư: vì sao kiến trúc này quan trọng cho âm thanh
Bản ghi âm thanh mang nhiều thông tin nhận diện hơn phần lớn tệp khác. Một voice memo chứa giọng nói nhận diện được (dấu giọng là duy nhất). Một bài hát có thể là nội dung có bản quyền. Một bản ghi cuộc họp có thể chứa thảo luận bí mật hoặc chi tiết y tế cá nhân. Trình chỉnh sửa âm thanh phía server đòi upload, nên một bản sao nằm trong log server, có thể trong cache CDN, có thể trong pipeline phân tích, có thể trong sao lưu. Cho nhạc thương mại thông thường, không quan trọng. Cho voice memo, ghi âm cuộc họp, đọc chính tả, phần thừa của podcast, ghi âm gia đình hoặc bất kỳ nội dung nào bạn không muốn bị sao vào ổ cứng của người lạ, thì có. Công cụ này thực hiện toàn bộ chuỗi (chọn tệp, giải mã, render dạng sóng, cắt, mã hóa lại, tải về) cục bộ trong trình duyệt của bạn. Không upload, không cuộc gọi API, không vết log. Bạn có thể kiểm chứng bằng cách mở tab Network của DevTools trong khi cắt: không request đi ra mang dữ liệu âm thanh. Một khi bundle WebAssembly của FFmpeg đã tải, bạn có thể đặt trang offline (chế độ máy bay) và công cụ vẫn hoạt động, bằng chứng thực nghiệm mạnh nhất rằng không gì được tải lên.
Câu hỏi thường gặp
Tôi có thể nhập và xuất định dạng nào?
Đầu vào: MP3, WAV, OGG (Vorbis), AAC, FLAC, M4A, mọi thứ decodeAudioData của trình duyệt bạn biết đọc. Trình duyệt hiện đại bao trùm cả tập. Đầu ra: MP3 (LAME bitrate biến ~190 kbps, điểm ngọt cho nhạc), WAV (PCM tuyến tính 16 bit, không mất mát) hoặc OGG Vorbis (~160 kbps VBR, chất lượng trong suốt và không bằng sáng chế). Mã hóa và giải mã đi qua ffmpeg.wasm trong trình duyệt của bạn, không server nào tham gia.
Có giới hạn kích thước tệp không?
Không có giới hạn phía server, vì không có upload. Trần thực tế là bộ nhớ khả dụng trên thiết bị của bạn: tệp phải được giải mã thành Float32Array JavaScript để hiển thị dạng sóng, đòi khoảng 42 MB RAM cho nguồn mono 4 phút ở 44,1 kHz trong khi xử lý. Tệp đến khoảng 100 MB qua được trên một laptop điển hình; tệp dài hơn (podcast vài giờ, cả album) có thể chậm hoặc thất bại trên di động cấp thấp. Nếu một lần nạp bị treo, hãy thử tệp nhỏ hơn hoặc cắt theo từng phần.
Cắt có giảm chất lượng âm thanh không?
Cho đầu ra WAV: không, WAV không mất mát, nên vùng đã cắt giống hệt mẫu nguồn từng bit giữa các điểm cắt. Cho đầu ra MP3 và OGG: một thế hệ lượng tử hóa nhỏ thêm vào vì nguồn được mã hóa lại. Các thiết lập bộ mã hóa dùng ở đây (LAME VBR ~190 kbps cho MP3, libvorbis chất lượng 5 ≈ 160 kbps cho OGG) cao hơn nhiều ngưỡng phần lớn người nghe cảm nhận được. Nếu bạn dự định chỉnh sửa lại đoạn sau, hãy chọn WAV; cho tệp gọn để phân phối, hãy chọn MP3 hoặc OGG.
Công cụ có hỗ trợ fade in / fade out không?
Không, vết cắt sắc nét ở cả hai đầu. Cho fade, nhiều rãnh, hiệu ứng hoặc mastering, hãy dùng Audacity (mã nguồn mở, miễn phí, đa nền tảng, phát hành ngày 28 tháng 5 năm 2000 tại Carnegie Mellon) hoặc Adobe Audition. Công cụ này có dạng đúng cho "tôi chỉ cần một đoạn được cắt sạch"; cho thứ phức tạp hơn, một DAW thực sự là công cụ phù hợp.
Vì sao dạng sóng chỉ hiển thị một kênh?
Dạng sóng vẽ kênh đầu tiên (kênh trái trong tệp stereo) thành một envelope mỗi cột pixel. Vẽ cả hai kênh bằng màu khác nhau sẽ gấp đôi không gian màn hình, hoặc đòi xếp chồng dạng sóng; cả hai phương án đều ồn hơn so với hiển thị một-kênh cho UI scrub nhanh. Việc cắt tự thân giữ mọi kênh (FFmpeg sao chép chúng nguyên dạng từ nguồn), nên ghi âm stereo vẫn là stereo ở đầu ra, dù chi tiết panned cực phải không xuất hiện trong hình ảnh.
Tệp âm thanh của tôi có bị tải lên không?
Không. Mỗi bước (chọn tệp, giải mã, render dạng sóng, cắt, mã hóa lại, tải về) chạy cục bộ trong trình duyệt qua JavaScript và ffmpeg.wasm. Không upload, không cuộc gọi API, không vết log. Bạn có thể kiểm chứng bằng cách mở tab Network của DevTools trong khi cắt. Một khi bundle ffmpeg.wasm đã tải, bạn có thể đặt trang offline và công cụ vẫn hoạt động, bằng chứng mạnh nhất rằng không gì được tải lên. An toàn cho voice memo, ghi âm cuộc họp, đọc chính tả y khoa, hoặc bất kỳ âm thanh nào bạn không muốn bị sao vào ổ cứng của người lạ.