Python-Spracherkennungsbibliothek

Ich suche nach einer Bibliothek in Python, die eine ziemlich genaue Spracherkennung hat. Es würde vorzugsweise eine Zeichenfolge zurückgeben, die angibt, was gesagt wurde, damit ich mit der Zeichenfolge arbeiten kann, um andere Dinge zu tun. Vielen Dank!!!

Ich habe mir diese verwandte Frage angesehen , aber ich glaube nicht, dass wir dasselbe fragen.

Diese Frage ist näher an dem, was Sie wollen.
Für welche Sprache? Englisch?
Ja, es sollte auf Englisch sein.

Antworten (2)

Sie können CMU Sphinx verwenden :

  • kostenlos und Open-Source
  • Recognizer-Bibliothek, die in C geschrieben ist, aber Python-Bindungen bereitstellt
  • oft als eine der besten Open-Source-Spracherkennungs-Engines bezeichnet

Als ich vor einiger Zeit nach einer Spracherkennungssoftware für Linux suchte, wurde mir gesagt, dass die Genauigkeit von CMU Sphinx deutlich geringer ist als die von Dragon (ich wäre neugierig, ob hier jemand einen Benchmark Sphinx vs. Dragon hat). Wenn sich Ihre Sprachaufzeichnungen jedoch in einem gut eingeschränkten Bereich befinden, können Sie CMU Sphinx möglicherweise gut genug trainieren.

Whisper von OpenAI (offline, MIT-Lizenz, Python 3.9, CLI) liefert eine sehr genaue Transkription. Zu verwenden (getestet auf 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

Wenn Sie eine Nvidia 3090-GPU verwenden, fügen Sie danach Folgendes hinzuconda 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

es kann als Python-Lib verwendet werden, zB :

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)

Leistungsinfo unten.

Modellschlusszeit:

Größe Parameter Nur-Englisch-Modell Mehrsprachiges Modell Benötigter VRAM Relative Geschwindigkeit
sehr klein 39 Mio tiny.en tiny ~1 GB ~32x
Base 74 Mio base.en base ~1 GB ~16x
klein 244 Mio small.en small ~2 GB ~6x
Mittel 769 M medium.en medium ~5 GB ~2x
groß 1550 Mio N / A large ~10 GB 1x

WER auf mehreren Korpussen von https://cdn.openai.com/papers/whisper.pdf :

Geben Sie hier die Bildbeschreibung ein

WER für mehrere Sprachen von https://github.com/openai/whisper/blob/main/language-breakdown.svg :

Geben Sie hier die Bildbeschreibung ein