Erm: Công cụ CLI giúp loại bỏ các từ đệm "ừm", "à" khỏi bản ghi âm một cách thông minh

Phần mềm12 tháng 6, 2026·5 phút đọc

Erm là một công cụ dòng lệnh chạy cục bộ, sử dụng AI để tự động phát hiện và cắt bỏ các từ đệm như "um", "uh" trong bản ghi âm. Bài viết này phân tích kỹ thuật về cách công cụ này giải quyết các thách thức phức tạp như tiếng click khi cắt âm thanh và sự khớp nhau của tần số nền.

Erm là một công cụ dòng lệnh (CLI) mới giúp giải quyết vấn đề đau đầu của những người làm podcast hoặc ghi âm giọng nói: loại bỏ các từ đệm vô nghĩa như "um", "uh", "er". Mặc dù nghe có vẻ đơn giản, nhưng việc tự động hóa quy trình này mà không làm hỏng chất lượng âm thanh là một thách thức kỹ thuật phức tạp.

Tại sao cách tiếp cận đơn giản không hiệu quả?

Bạn có thể nghĩ rằng quy trình sẽ chỉ bao gồm: chuyển đổi giọng nói thành văn bản với dấu thời gian (timestamps), tìm các từ như "um" và "uh", sau đó cắt bỏ các đoạn đó bằng ffmpeg. Tuy nhiên, phương pháp ngây thơ này chỉ đạt được khoảng 60% hiệu quả và kết quả nghe còn tệ hơn bản gốc vì ba lý do chính:

  1. Mô hình Whisper bỏ sót nhiều từ đệm: Whisper thường tự động làm sạch bản ghi, loại bỏ các từ đệm nên không có token nào để khớp.
  2. Tiếng click khi cắt: Cắt âm thanh tại một điểm tùy ý trên dạng sóng (waveform) sẽ tạo ra một bước nhảy nhỏ, khiến tai bạn nghe thấy tiếng click khó chịu.
  3. Sự không khớp của tạp âm nền: Ngay cả khi mối nối sạch sẽ, tiếng xì xèo (hiss) của nền trước và sau điểm cắt không khớp nhau, tạo ra sự thay đổi âm lượng nhẹ nhàng nhưng đáng chú ý.

Hầu hết mã nguồn của Erm được dành để giải quyết ba vấn đề này.

Cách Erm hoạt động

Phát hiện thông minh với Whisper và xử lý âm thanh

Erm sử dụng faster-whisper, một phiên bản triển khai lại của mô hình Whisper của OpenAI, giúp chạy nhanh hơn và tiết kiệm bộ nhớ hơn. Công cụ này yêu cầu dấu thời gian cấp độ từ và hướng dẫn Whisper không làm sạch bản ghi.

Tuy nhiên, Whisper vẫn bỏ sót nhiều thứ, nên Erm thực hiện thêm ba lần quét trực tiếp trên dữ liệu âm thanh:

  • Từ đệm trong khoảng nghỉ (Gap fillers): Nếu có khoảng nghỉ quá dài giữa hai từ, Erm sẽ kiểm tra xem có thực sự có âm thanh trong khoảng "im lặng" đó không. Whisper thường loại bỏ hoàn toàn các từ đệm này, chỉ để lại một lỗ hổng trong bản ghi.
  • Từ đệm ẩn trong từ: Đôi khi Whisper dán từ đệm vào từ liền kề (ví dụ: "in, uhhhhh" thành một token "in"). Erm sẽ tìm các từ dài bất thường, tách chúng tại các điểm giảm âm lượng ngắn và xác định phần nào là từ thật, phần nào là từ đệm.
  • Từ quá dài: Nếu một từ kéo dài lâu hơn mức hợp lý, phần đuôi của nó đáng ngờ. Erm sẽ quét phần đuôi này để kiểm tra cao độ (pitch), phân biệt xem người nói đang giữ nguyên âm (uhhhhh) hay chỉ nói chậm.

Tinh chỉnh điểm cắt để tránh tiếng Click

Để tránh tiếng click, Erm không cắt ngay tại dấu thời gian phát hiện ra. Thay vào đó, nó thực hiện hai bước:

  1. Trượt điểm cắt: Cho phép điểm cắt di chuyển một chút (tối đa 60ms) để tìm điểm yên tĩnh nhất gần đó.
  2. Snap to Zero-crossing: Từ điểm yên tĩnh, điểm cắt sẽ "dính" vào thời điểm gần nhất mà dạng sóng đi qua điểm 0. Nối hai điểm 0 lại với nhau tạo ra dạng sóng liên tục, không có bước nhảy.

Ngoài ra, các mảnh âm thanh quá ngắn (dưới 120ms) giữa hai điểm cắt sẽ được gộp lại để tránh tạo ra những tiếng blip ngắn.

Ghép nối và xử lý Room Tone

Erm sử dụng ffmpeg để ghép nối âm thanh với hiệu ứng crossfade (chuyển tiếp chéo). Thay vì ghép thẳng hai đoạn, nó chồng lên nhau một chút và làm mờ đoạn này ra trong khi đoạn khác nổi lên. Độ dài crossfade được tỷ lệ theo kích thước của đoạn cắt: đoạn "uh" ngắn sẽ có crossfade ngắn, đoạn "ummmm" dài sẽ có crossfade dài hơn.

Một vấn đề khác là "room tone" (âm thanh nền của phòng). Mỗi phòng có một kiểu "im lặng" riêng. Erm giải quyết việc này bằng cách tìm một đoạn yên tĩnh trong bản ghi gốc và lặp lại nó dưới toàn bộ đầu ra ở mức âm lượng thấp. Điều này tạo ra một nền âm thanh đồng nhất, che đi các sự thay đổi nhỏ tại các điểm cắt.

Chế độ khử tiếng ồn (Denoising)

ffmpeg có công cụ khử tiếng ồn tích hợp, nhưng việc chạy nó sai thời điểm sẽ gây hại. Erm có 4 chế độ, trong đó chế độ hybrid (mặc định) là tốt nhất: phát hiện chạy trên âm thanh gốc (để thấy tất cả các manh mối), nhưng các đoạn cắt thực tế được lấy từ bản đã khử tiếng ồn (để mối nối nghe đẹp hơn).

Cài đặt và Sử dụng

Erm không chạm vào các từ như "like", "you know" hay các từ lặp lại, vì những từ đó mang ý nghĩa ngôn ngữ và việc cắt chúng sẽ làm thay đổi nội dung câu nói. Công cụ này chỉ tập trung vào việc loại bỏ tiếng ồn, không phải biên tập ngôn ngữ.

Để sử dụng Erm, bạn cần cài đặt ffmpegffprobe. Sau đó, bạn có thể cài đặt nhanh thông qua uv:

uvx erm input.wav --dry-run     # xem trước những gì sẽ bị cắt
uvx erm input.wav               # xuất file

Hoặc cài đặt bằng pip:

pip install erm
erm input.wav

Đây là một công cụ mã nguồn mở hữu ích cho những người thường xuyên ghi âm giọng nói, podcast hoặc voice notes, giúp tiết kiệm rất nhiều thời gian chỉnh sửa thủ công mà vẫn giữ dữ liệu riêng tư hoàn toàn trên máy tính.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗