Chuyển đổi giọng nói thành văn bản là một tính năng quan trọng trong nhiều ứng dụng, từ trợ lý cá nhân đến các công cụ phiên âm. Trong bài viết này, chúng ta sẽ khám phá các thư viện và dịch vụ hàng đầu để triển khai chức năng chuyển đổi giọng nói thành văn bản trong Python: SpeechRecognition, Google Cloud Speech-to-Text, Azure Speech Service, và Whisper của OpenAI. Chúng ta sẽ cung cấp mã ví dụ cho từng thư viện và so sánh hiệu suất, độ chính xác và giá cả của chúng.

1. SpeechRecognition

Tổng quan

  • Loại: Mở nguồn
     
  • Phụ thuộc: Micro cục bộ hoặc các tệp âm thanh đã được ghi âm trước
     
  • Backend: Google Web Speech API theo mặc định
     
  • Lý tưởng cho: Xây dựng mẫu nhanh, các dự án sở thích

Đoạn mã

import speech_recognition as sr

recognizer = sr.Recognizer()

with sr.Microphone() as source:
    print("Đang lắng nghe...")
    audio = recognizer.listen(source)

try:
    text = recognizer.recognize_google(audio)
    print("Bạn đã nói:", text)
except sr.UnknownValueError:
    print("Không thể hiểu âm thanh.")
except sr.RequestError as e:
    print(f"Lỗi API: {e}")

2. Google Cloud Speech-to-Text

Tổng quan

  • Loại: API dựa trên đám mây
     
  • Phụ thuộc: Tài khoản Google Cloud
     
  • Lý tưởng cho: Độ chính xác cao, hỗ trợ nhiều ngôn ngữ
     

Đoạn mã

from google.cloud import speech
import io

client = speech.SpeechClient()

with io.open("audio.wav", "rb") as audio_file:
    content = audio_file.read()

audio = speech.RecognitionAudio(content=content)
config = speech.RecognitionConfig(
    encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
    sample_rate_hertz=16000,
    language_code="en-US",
)

response = client.recognize(config=config, audio=audio)

for result in response.results:
    print("Bản ghi:", result.alternatives[0].transcript)

3. Azure Speech Service

Tổng quan

  • Loại: API dựa trên đám mây
     
  • Phụ thuộc: Tài khoản Azure Cognitive Services
     
  • Lý tưởng cho: Ứng dụng doanh nghiệp, tích hợp với hệ sinh thái Microsoft
     

Đoạn mã

import azure.cognitiveservices.speech as speechsdk

speech_key = "YOUR_AZURE_SPEECH_KEY"
service_region = "YOUR_SERVICE_REGION"
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)

speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)

print("Hãy nói điều gì đó...")
result = speech_recognizer.recognize_once()

if result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Đã nhận diện:", result.text)
else:
    print("Lỗi:", result.reason)

4. Whisper của OpenAI

Tổng quan

  • Loại: Mở nguồn, ngoại tuyến
     
  • Phụ thuộc: Mô hình Whisper được đào tạo trước
     
  • Lý tưởng cho: Phiên âm ngoại tuyến, độ chính xác cao cho các giọng nói đa dạng
     

Đoạn mã

import whisper

model = whisper.load_model("base")

result = model.transcribe("audio.mp3")
print("Bản phiên âm:", result["text"])

Bảng so sánh

Chuyển đổi giọng nói thành văn bản - so sánh các dịch vụ

Thông tin hiệu suất

  1. Độ chính xác:

    • Whisper và Google Cloud Speech cung cấp độ chính xác vượt trội cho các giọng nói đa dạng và môi trường ồn ào.
       
    • SpeechRecognition có thể gặp khó khăn với âm thanh không rõ ràng.
       
  2. Tốc độ:

    • SpeechRecognition và các dịch vụ đám mây như Google và Azure nhanh hơn Whisper, đặc biệt là đối với các tác vụ thời gian thực.
       
    • Whisper chậm hơn nhưng hoạt động ngoại tuyến, làm cho nó có giá trị đối với các ứng dụng tập trung vào quyền riêng tư.
       
  3. Chi phí:

    • SpeechRecognition và Whisper có hiệu quả về chi phí đối với các dự án nhỏ hơn.
       
    • Các dịch vụ đám mây (Google và Azure) tốt hơn cho các nhu cầu quy mô lớn, độ chính xác cao nhưng đi kèm với chi phí liên tục.

Đề xuất cuối cùng

  • Sử dụng SpeechRecognition cho các dự án nhanh và quy mô nhỏ.
     
  • Chọn Google Cloud Speech hoặc Azure Speech Service cho các ứng dụng doanh nghiệp yêu cầu độ chính xác và hỗ trợ ngôn ngữ cao.
     
  • Chọn Whisper nếu khả năng ngoại tuyến hoặc quyền riêng tư là ưu tiên.