Hướng dẫn

Vì sao bản chép lời của bạn lặp đi lặp lại cùng một câu

Đó không phải lỗi bản ghi của bạn, cũng không phải tải về bị hỏng. Đó là điều Whisper làm khi không ai nói — và có những cách cụ thể để chặn nó lại.

Bạn chép lời một bản ghi dài, mở bản chép lời ra, và ở đâu đó giữa chừng nó biến thành thế này:

[ Silence ]
[ Silence ]
[ Silence ]
[ Silence ]

Hoặc tệ hơn, nó chọn một câu có thật ở đoạn trước trong tệp rồi lặp lại câu đó bốn mươi lần, với những dấu thời gian trông hợp lý, như thể có người thật sự nói "cảm ơn đã theo dõi" mỗi giây một lần trong suốt một phút.

Đây là lời phàn nàn phổ biến nhất về chép lời tự động, và gần như mọi công cụ xây trên Whisper của OpenAI đều có một biến thể của nó. Hiểu nguyên nhân là điều đáng làm, vì cách khắc phục không phải là "mua một mô hình lớn hơn".

Chuyện gì thật sự đang xảy ra #

Whisper là một mô hình ngôn ngữ. Nó không "nghe thấy từ rồi viết ra" — nó dự đoán khối văn bản tiếp theo có khả năng cao nhất, dựa trên phần âm thanh và mọi thứ nó đã viết ra trước đó.

Cách nhìn đó giải thích lỗi này. Khi phần âm thanh chứa tiếng nói, văn bản tiếp theo có khả năng cao nhất chính là những từ đang được nói ra. Khi phần âm thanh không có tiếng nói — một quãng ngưng, tiếng nền của phòng, nhạc chờ, tiếng vỗ tay, giảng viên đi tới bảng trắng — mô hình vẫn phải tạo ra thứ gì đó. Không có mã nào cho "chỗ này chẳng có gì xảy ra".

Thế nên nó quay về đúng thứ các mô hình ngôn ngữ làm khi thiếu tín hiệu: nó tự lặp lại. Nó vừa viết ra một câu, phần tiếp nối có xác suất cao nhất của câu đó là một câu tương tự, và khi trong âm thanh không có gì phản bác phỏng đoán ấy, nó cứ thế đi vòng tròn. Whisper xử lý âm thanh theo cửa sổ 30 giây, nên một khi một cửa sổ rơi vào vòng lặp, bạn nhận được cùng một dòng cho cả cửa sổ đó, rồi cửa sổ tiếp theo bắt đầu lại từ đầu và thường lặp lại chuyện đó.

Đó là lý do vấn đề xuất hiện theo một khuôn mẫu rất cụ thể:

  • Bản ghi dài, vì chúng chứa nhiều im lặng hơn.
  • Khúc giữa và khúc cuối tệp, sau khi phần thú vị đã qua nhưng thiết bị ghi vẫn chạy.
  • Nhạc và tiếng vỗ tay, thứ âm thanh dày đặc mà không có từ nào trong đó.
  • Bản ghi có người nói nhỏ tiếng trong phòng ồn, nơi mô hình không tách được hai thứ ra.

Một cuộc phỏng vấn năm phút thực hiện ở gần micro thì gần như không bao giờ bị vậy. Một cuộc họp hai tiếng mà thiết bị ghi vẫn chạy thêm hai mươi phút sau khi mọi người đã về thì gần như luôn bị.

Vì sao "[ Silence ]" và "[BLANK_AUDIO]" là triệu chứng riêng của cùng một chuyện #

Dữ liệu huấn luyện của Whisper có những bản chép lời chứa chú thích trong ngoặc — [ Silence ], [BLANK_AUDIO], (music), ♪♪♪. Nên khi gặp phần không phải tiếng nói, một trong những đầu ra có khả năng của nó là một trong các dấu hiệu đó, lặp đi lặp lại.

Đây là phiên bản lành tính hơn: ít nhất bản chép lời cũng thành thật rằng ở đó chẳng có gì. Nó vẫn nhét vào tài liệu của bạn hàng trăm dòng rác, và vẫn có nghĩa là công cụ đang tiêu tốn thời gian thật để giải mã sự im lặng.

Bốn cách khắc phục #

Xếp đại khái theo mức độ hiệu quả.

1. Phát hiện hoạt động giọng nói (cách khắc phục thật sự) #

Phát hiện hoạt động giọng nói — VAD — là một mô hình nhỏ, riêng biệt, chạy trước khi chép lời và đánh dấu những phần âm thanh nào có tiếng người. Bộ chép lời sau đó chỉ được đưa cho đúng những phần đó.

Cách này giải quyết vấn đề ngay tại gốc, vì vòng lặp chỉ xảy ra khi Whisper được đưa cho phần âm thanh không có tiếng nói. Nếu sự im lặng không bao giờ đến được mô hình thì chẳng có gì để nó bịa ra. Nó cũng làm các tệp dài chạy nhanh hơn, vì bạn không còn phải trả giá để giải mã hai mươi phút phòng trống.

Mô hình được dùng rộng rãi là Silero VAD, và các phiên bản gần đây của whisper.cpp hỗ trợ nó trực tiếp. Nếu ứng dụng của bạn có tùy chọn VAD hay "bỏ qua im lặng", hãy bật lên. Nếu không có, đây là điều hợp lý để đề nghị nhà phát triển bổ sung.

2. Tự cắt bớt phần im lặng #

Nếu công cụ của bạn không có tùy chọn VAD, bạn có thể làm một phiên bản thô sơ bằng tay: cắt đầu và đuôi bản ghi trước khi chép lời, để hai mươi phút tiếng dọn đồ không bao giờ bị xử lý.

Trình biên tập âm thanh nào cũng làm được việc này. Nó tẻ nhạt, và chẳng giúp gì cho phần im lặng ở giữa tệp, nhưng với trường hợp rất phổ biến là "thiết bị ghi chạy lố ở cuối" thì nó mất ba mươi giây và loại bỏ được phần tệ nhất.

3. Lọc bỏ các dấu hiệu về sau #

Nếu bản chép lời của bạn đầy [ Silence ]♪♪♪, những thứ đó dễ xóa bằng tìm-và-thay-thế, vì chúng là những dòng nguyên vẹn có hình dạng dễ nhận ra.

Hãy cẩn thận một điểm: chỉ xóa những dòng hoàn toàn là một dấu hiệu. Một dòng như "rồi sau đó — (cười) — chúng tôi phát hành nó" là tiếng nói thật và bạn muốn giữ lại. Đây đúng là quy tắc mà một ứng dụng tốt nên áp dụng thay cho bạn.

4. Cắt nhỏ tệp #

Vì vòng lặp bị giới hạn trong cửa sổ của Whisper, việc chia một bản ghi dài thành các phần ngắn hơn sẽ hạn chế thiệt hại — một cửa sổ hỏng chỉ làm hỏng một phút thay vì hòa vào cả một bức tường lặp lại. Một số ứng dụng làm việc này ở bên trong.

Đây là cách chữa cháy chứ không phải cách khắc phục. Nó thu hẹp bán kính thiệt hại; nó không ngăn mô hình bịa ra nội dung khi gặp im lặng.

Những gì không khắc phục được #

Một mô hình lớn hơn. Chuyển từ Base lên Large tốn của bạn rất nhiều thời gian và dung lượng ổ đĩa mà không loại bỏ được vòng lặp, vì nguyên nhân không phải là thiếu năng lực — mà là bị yêu cầu chép lời một thứ không chứa tiếng nói nào. Mô hình lớn cũng lặp. (Đọc thêm về sự đánh đổi kích thước.)

Một dịch vụ đám mây. Các công cụ đám mây tốt có chạy VAD và hậu xử lý trong quy trình của họ, đó là lý do họ gặp chuyện này ít hơn. Cơ chế bên dưới vẫn y như vậy, và không ít dịch vụ trong số đó vẫn cho ra "cảm ơn" năm mươi lần trên một tệp yên tĩnh. Trả tiền theo phút không mua cho bạn một bộ giải mã khác.

Chạy lại. Việc lấy mẫu của Whisper không hoàn toàn tất định, nên lần thử thứ hai có thể lặp ở một chỗ khác. Đó không phải cách khắc phục, đó là tung đồng xu.

Chúng tôi làm gì với chuyện này #

Nói cụ thể, vì một câu trả lời mơ hồ sẽ vô dụng ở đây.

Offline Transcription chạy Silero VAD trước khi chép lời, nên những quãng im lặng và không phải tiếng nói không bao giờ đến được bộ giải mã. Ngoài ra, những dấu hiệu chiếm trọn một đoạn như [ Silence ] và các ký hiệu nhạc đứng một mình sẽ bị lọc khỏi kết quả, trong khi những dòng chỉ có chứa một chú thích trong ngoặc thì được giữ lại, vì đó là tiếng nói thật.

Với các tệp dài, ứng dụng còn chép lời theo cửa sổ và cắt mỗi cửa sổ ở điểm yên tĩnh nhất trong âm thanh, để ranh giới rơi vào giữa các câu chứ không cắt ngang một câu.

Lưu ý thành thật: điều này khiến vấn đề lặp câu trở nên rất hiếm, chứ không phải bất khả. Bất kỳ công cụ nào dựa trên Whisper, kể cả của chúng tôi, đều là một mô hình ngôn ngữ đang đưa ra dự đoán, và một mô hình biết dự đoán thì có thể sai. Nếu bạn đang chép lời thứ gì đó mà độ chính xác quan trọng, hãy đối chiếu bản chép lời với phần âm thanh ở những chỗ bạn định dựa vào — hướng dẫn phỏng vấn của chúng tôi có một cách nhanh để làm việc đó.

Tóm lại #

Vòng lặp là việc Whisper dự đoán văn bản cho phần âm thanh không có tiếng nói nào trong đó. Phát hiện hoạt động giọng nói loại bỏ nguyên nhân bằng cách không bao giờ đưa phần âm thanh đó cho nó. Cắt bớt im lặng và lọc các dấu hiệu sẽ giúp ích nếu công cụ của bạn không có VAD. Một mô hình lớn hơn thì hoàn toàn không giúp gì.

Tải Offline Transcription

Chuyển âm thanh và video thành văn bản hoàn toàn trên chính chiếc Mac của bạn. Không có gì được tải lên, không cần tài khoản, không tính phí theo phút.

macOS 13.0 or higher · iOS 16.4 or higher