Việc chuyển đổi âm thanh thành văn bản cục bộ sử dụng mô hình Whisper của OpenAI đã thu hút sự quan tâm đáng kể từ các nhà phát triển đang tìm kiếm các giải pháp thay thế tập trung vào quyền riêng tư so với các dịch vụ đám mây. Mặc dù việc triển khai cơ bản khá đơn giản, cộng đồng nhà phát triển đã khám phá ra một số kỹ thuật nâng cao giúp cải thiện đáng kể cả độ chính xác và hiệu suất.
Tiền xử lý tạo ra sự khác biệt lớn
Cải tiến có tác động lớn nhất đến từ việc tiền xử lý âm thanh phù hợp trước khi đưa các tệp vào Whisper. Việc chuyển đổi các tệp âm thanh sang định dạng WAV 16kHz cung cấp điều kiện xử lý tối ưu. Thêm bộ lọc thông thấp và thông cao giúp loại bỏ các âm thanh không phải tiếng nói có thể làm mô hình nhầm lẫn. Chỉ riêng bước tiền xử lý này đã có thể giảm đáng kể lỗi chuyển đổi và cải thiện chất lượng tổng thể.
Voice Activity Detection ( VAD ) đã nổi lên như một công cụ tiền xử lý quan trọng. Bằng cách sử dụng Silero VAD để xác định các dấu thời gian khi người nói thực sự đang nói, các nhà phát triển có thể tránh được một trong những điểm yếu lớn nhất của Whisper - tạo ra văn bản ảo trong các khoảng thời gian im lặng. Tuy nhiên, VAD cần được điều chỉnh cẩn thận để tránh việc cắt các đoạn âm thanh một cách không phù hợp.
Tối ưu hóa phần cứng cụ thể mang lại tăng tốc độ lớn
Các tối ưu hóa dành riêng cho nền tảng có thể cung cấp cải thiện hiệu suất đáng kể. Người dùng Mac chạy bộ xử lý Apple Silicon có thể đạt được tốc độ tăng đáng kể bằng cách sử dụng các mô hình whisper-mlx từ Hugging Face , được thiết kế đặc biệt cho Neural Engine của Apple . Một nhà phát triển đã báo cáo cải thiện hiệu suất 22 lần khi chuyển sang các mô hình được tối ưu hóa này.
Đối với các hệ thống có GPU NVIDIA , gia tốc GPU thường cung cấp cải thiện tốc độ 2-3 lần so với xử lý chỉ bằng CPU. Tuy nhiên, quản lý bộ nhớ trở nên quan trọng khi làm việc với các mô hình lớn hơn hoặc các tệp âm thanh dài hơn.
Tối ưu hóa theo phần cứng cụ thể
- Mac (Apple Silicon): Sử dụng các mô hình whisper-mlx để cải thiện tốc độ lên đến 22 lần
- NVIDIA GPU: Nhanh hơn 2-3 lần so với xử lý chỉ bằng CPU
- Hệ thống chỉ có CPU: Nên sử dụng mô hình "base" để đảm bảo hiệu quả tài nguyên
- Tesla A100: Có thể xử lý các mô hình lớn mà không gặp vấn đề về bộ nhớ
Hậu xử lý và phân tách người nói thêm sự chuyên nghiệp
Cộng đồng đã phát hiện ra rằng việc hậu xử lý các bản chuyển đổi thông qua các Mô hình Ngôn ngữ Lớn cục bộ có thể làm sạch đáng kể văn bản đầu ra. Ngay cả các mô hình khiêm tốn với 12-14 tỷ tham số cũng có thể xác định và sửa các lỗi chuyển đổi phổ biến, cải thiện chất lượng kết quả cuối cùng một cách đáng kể.
Phân tách người nói - khả năng xác định các người nói khác nhau trong một cuộc hội thoại - đã trở nên ngày càng dễ tiếp cận. Hai thư viện nổi bật trong các cuộc thảo luận của cộng đồng: pyannote/speaker-diarization-3.1 từ Hugging Face và thư viện nhẹ senko . Trong khi pyannote cung cấp độ chính xác cao hơn, senko xử lý âm thanh trong vài giây thay vì hàng giờ, làm cho nó thực tế hơn cho nhiều trường hợp sử dụng.
Tôi phát hiện ra rằng độ chính xác/thành công tăng đáng kể khi tôi thêm bộ xử lý hậu kỳ LLM ngay cả với các mô hình có kích thước khiêm tốn 12-14b.
Thư viện Speaker Diarization được khuyến nghị
- pyannote/speaker-diarization-3.1: Độ chính xác cao hơn nhưng xử lý chậm hơn (hàng giờ đối với audio dài)
- senko: Xử lý cực nhanh (vài giây) nhưng tỷ lệ lỗi từ khoảng 10%
- whisper-standalone-win: Tích hợp Whisper với diarization tích hợp sẵn dành cho người dùng Windows
Xử lý hàng loạt và quản lý bộ nhớ
Đối với người dùng xử lý khối lượng lớn âm thanh, các chiến lược xử lý hàng loạt giúp quản lý tài nguyên hệ thống một cách hiệu quả. Xử lý các tệp trong các khối nhỏ hơn tương ứng với dấu thời gian VAD ngăn chặn tràn bộ nhớ trong khi duy trì chất lượng chuyển đổi. Thiết lập các biến môi trường như OMP_NUM_THREADS thành 1 có thể tối ưu hóa việc sử dụng CPU cho các hoạt động đơn luồng.
Việc lựa chọn kích thước mô hình Whisper trở nên quan trọng đối với các môi trường hạn chế tài nguyên. Trong khi mô hình cơ bản cung cấp sự cân bằng tốt giữa tốc độ và độ chính xác cho hầu hết người dùng, những người có đủ phần cứng có thể hưởng lợi từ độ chính xác vượt trội của mô hình large-v2 trên âm thanh khó xử lý.
So sánh hiệu suất các mô hình Whisper
Mô hình | Kích thước | Thời gian xử lý (1 giờ âm thanh) | Độ chính xác | Trường hợp sử dụng tốt nhất |
---|---|---|---|---|
Tiny | 39 MB | 15 phút | 60% | Kiểm tra nhanh |
Base | 74 MB | 35 phút | 70% | Mục đích chung |
Small | 244 MB | 1.5 giờ | 80% | Chất lượng cao |
Medium | 769 MB | 3 giờ | 83% | Độ chính xác chuyên nghiệp |
Large-v2 | 1550 MB | Thay đổi | 90%+ | Độ chính xác tối ưu |
Tích hợp với quy trình làm việc hiện có
Tính linh hoạt của các giải pháp chuyển đổi cục bộ cho phép tích hợp liền mạch vào các quy trình làm việc phát triển hiện có. Một số nhà phát triển đã tạo ra các pipeline hoàn chỉnh xử lý mọi thứ từ chuyển đổi âm thanh đến làm sạch văn bản cuối cùng một cách tự động. Những người khác đã xây dựng các công cụ chuyên biệt cho các trường hợp sử dụng cụ thể, chẳng hạn như loại bỏ quảng cáo khỏi bản chuyển đổi podcast.
Sự đồng thuận của cộng đồng cho thấy nên bắt đầu với các triển khai cơ bản và dần dần thêm các tối ưu hóa dựa trên nhu cầu cụ thể. Cách tiếp cận này cho phép các nhà phát triển hiểu tác động của từng thành phần trong khi xây dựng các hệ thống chuyển đổi ngày càng tinh vi phù hợp với yêu cầu của họ.
Tham khảo: Python Audio Transcription: Convert Speech to Text Locally