Библиотека распознавания речи Python

Я ищу библиотеку на питоне с довольно точным распознаванием речи. Предпочтительно, чтобы он возвращал строку, указывающую, что было сказано, чтобы я мог работать со строкой, чтобы делать другие вещи. Спасибо!!!

Я посмотрел на этот связанный вопрос, но я не думаю, что мы спрашиваем одно и то же.

Этот вопрос ближе к тому, что вы хотите.
Для какого языка? Английский?
Да, это должно быть на английском языке.

Ответы (2)

Вы можете использовать CMU Sphinx :

  • бесплатно и с открытым исходным кодом
  • библиотека распознавания, написанная на C, но обеспечивающая привязки Python
  • часто упоминается как один из лучших движков распознавания речи с открытым исходным кодом

Некоторое время назад, когда я искал программное обеспечение для распознавания речи для Linux, мне сказали, что точность CMU Sphinx значительно ниже, чем у Dragon (мне было бы любопытно, есть ли у кого-нибудь здесь эталонный тест Sphinx vs Dragon). Однако, если ваши голосовые записи находятся в строго ограниченной области, вы можете достаточно хорошо обучить CMU Sphinx.

Whisper от OpenAI (офлайн, лицензия MIT, Python 3.9, CLI) обеспечивает очень точную транскрипцию. Для использования (проверено на 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

При использовании графического процессора Nvidia 3090 добавьте следующее послеconda 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

его можно использовать как библиотеку Python, например :

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)

Информация о производительности ниже.

Время вывода модели:

Размер Параметры только англоязычная модель Многоязычная модель Требуемая видеопамять Относительная скорость
крошечный 39 м tiny.en tiny ~1 ГБ ~32x
база 74 м base.en base ~1 ГБ ~16x
маленький 244 М small.en small ~2 ГБ ~6x
средний 769 М medium.en medium ~ 5 ГБ ~2x
большой 1550 м Н/Д large ~10 ГБ 1x

WER на нескольких корпусах из https://cdn.openai.com/papers/whisper.pdf :

введите описание изображения здесь

WER на нескольких языках с https://github.com/openai/whisper/blob/main/language-breakdown.svg :

введите описание изображения здесь