Синхронное распознавание речи с помощью Python SDK
Ниже приведен пример синхронного распознавания речи из аудиофайла с помощью Python SDK SpeechKit. В примере заданы параметры:
- модель распознавания —
general
; - язык — русский.
Для работы с Python SDK нужен пакет yandex-speechkit
.
Аутентификация выполняется от имени сервисного аккаунта с помощью API-ключа или IAM-токена. Подробнее об аутентификации в API SpeechKit.
Перед началом работы
- Создайте сервисный аккаунт и назначьте ему роль
ai.speechkit-stt.user
. - Для сервисного аккаунта получите и сохраните API-ключ.
- Скачайте пример
аудиофайла для распознавания или сгенерируйте свой.
Создайте приложение для синхронного распознавания речи
-
Установите пакет
yandex-speechkit
с помощью менеджера пакетов pip :pip install yandex-speechkit
Установка проверялась на Python 3.9. Минимально допустимую версию Python см. на сайте SDK
.Если возникает конфликт версий пакета
grpcio-tools
, см. раздел Решение конфликта версий при установке Python SDK. -
Создайте файл
test.py
и добавьте в него код:from argparse import ArgumentParser from speechkit import model_repository, configure_credentials, creds from speechkit.stt import AudioProcessingType # Аутентификация через API-ключ. configure_credentials( yandex_credentials=creds.YandexCredentials( api_key='<API-ключ>' ) ) def recognize(audio): model = model_repository.recognition_model() # Задайте настройки распознавания. model.model = 'general' model.language = 'ru-RU' model.audio_processing_type = AudioProcessingType.Full # Распознавание речи в указанном аудиофайле и вывод результатов в консоль. result = model.transcribe_file(audio) for c, res in enumerate(result): print('=' * 80) print(f'channel: {c}\n\nraw_text:\n{res.raw_text}\n\nnorm_text:\n{res.normalized_text}\n') if res.has_utterances(): print('utterances:') for utterance in res.utterances: print(utterance) if __name__ == '__main__': parser = ArgumentParser() parser.add_argument('--audio', type=str, help='audio path', required=True) args = parser.parse_args() recognize(args.audio)
Где:
-
api_key
— API-ключ для сервисного аккаунта. -
audio
— путь до файла для записи аудио. -
model
— модель распознавания. -
language
— язык, для которого будет выполнено распознавание. -
audio_processing_type
— способ обработки аудио.В Python SDK не поддержаны возможности потокового и асинхронного распознавания, но их можно просимулировать. Для этого в файле
test.py
, в параметреaudio_processing_type
, укажите значение:AudioProcessingType.Stream
— для потокового распознавания;AudioProcessingType.Full
— для асинхронного распознавания.
-
-
Выполните созданный файл:
python3 test.py --audio speech.pcm
Где
--audio
— путь к аудиофайлу, который необходимо распознать.Результат содержит распознанную речь:
channel: 0 raw_text: я яндекс спичкит я могу превратить любой текст в речь теперь и вы можете norm_text: Я Яндекс Спичкит, я могу превратить любой текст в речь, теперь и вы можете. utterances: - Я Яндекс Спичкит, я могу превратить любой текст в речь, теперь и вы можете. [0.419, 6.379]