Biblioteca de reconocimiento de voz de Python

Estoy buscando una biblioteca en Python que tenga un reconocimiento de voz bastante preciso. Preferiría devolver una cadena que indique lo que se dijo, de modo que pueda trabajar con la cadena para hacer otras cosas. ¡¡¡Gracias!!!

Miré esta pregunta relacionada, pero no creo que estemos preguntando lo mismo.

Esta pregunta está más cerca de lo que quieres.
¿Para qué idioma? ¿Inglés?
Sí, debería estar en inglés.

Respuestas (2)

Puedes usar CMU Sphinx :

  • libre y de código abierto
  • biblioteca de reconocimiento escrita en C pero proporciona enlaces de Python
  • a menudo mencionado como uno de los mejores motores de reconocimiento de voz de código abierto

Cuando buscaba un software de reconocimiento de voz para Linux hace un tiempo, me dijeron que la precisión de CMU Sphinx es significativamente menor que la de Dragon (tendría curiosidad si alguien aquí tiene un punto de referencia Sphinx vs Dragon). Sin embargo, si sus grabaciones de voz están en un dominio bien restringido, es posible que pueda entrenar a CMU Sphinx lo suficientemente bien.

Whisper de OpenAI (fuera de línea, licencia MIT, Python 3.9, CLI) produce una transcripción muy precisa. Para usar (probado en Ubuntu 20.04 x64 LTS):

conda create -y --name whisperpy39 python==3.9
conda activate whisperpy39
pip install git+https://github.com/openai/whisper.git 
sudo apt update && sudo apt install ffmpeg
whisper recording.wav
whisper recording.wav --model large

Si usa una GPU Nvidia 3090, agregue lo siguiente despuésconda activate whisperpy39

pip install -f https://download.pytorch.org/whl/torch_stable.html
conda install pytorch==1.10.1 torchvision torchaudio cudatoolkit=11.0 -c pytorch

se puede usar como una biblioteca de Python, por ejemplo :

import whisper

model = whisper.load_model("base")

# load audio and pad/trim it to fit 30 seconds
audio = whisper.load_audio("audio.mp3")
audio = whisper.pad_or_trim(audio)

# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to(model.device)

# detect the spoken language
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")

# decode the audio
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)

# print the recognized text
print(result.text)

Información de rendimiento a continuación.

Tiempo de inferencia del modelo:

Tamaño Parámetros Modelo solo en inglés Modelo multilingüe VRAM requerida Velocidad relativa
diminuto 39 M tiny.en tiny ~1GB ~32x
base 74 millones base.en base ~1GB ~16x
pequeña 244 millones small.en small ~2 GB ~6x
medio 769 millones medium.en medium ~5 GB ~2x
largo 1550 M N / A large ~10 GB 1x

WER en varios corpus de https://cdn.openai.com/papers/whisper.pdf :

ingrese la descripción de la imagen aquí

WER en varios idiomas de https://github.com/openai/whisper/blob/main/language-breakdown.svg :

ingrese la descripción de la imagen aquí