Невозможно повысить точность транскрипции с помощью повышения адаптации к речи

Я использую библиотеку SpeechRecognition Python для выполнения операций преобразования речи в текст. Я использую функцию recognize_google_cloud для использования Google Cloud Speech-to-Text API.

Вот мой код:

import speech_recognition as sr;
import json;

j = '';

with open('key.json', 'r') as f:
    j = f.read().replace('\n', '');

js = json.loads(j);

r = sr.Recognizer();
mic = sr.Microphone();

with candide as source:
    audio = r.record(source);
    print(r.recognize_google_cloud(audio, language='fr-FR', preferred_phrases=['pistoles', 'disait'], credentials_json=j));

Функция recognize_google_cloud отправляет данные, захваченные микрофоном, в Google API и выбирает наиболее вероятную транскрипцию заданной речи среди набора альтернатив. Параметр preferered_phrases, как объясняется на этой странице документации, используется для выбора другой альтернативы, содержащей перечисленные слова.

Улучшить эти результаты можно с помощью повышения речевой адаптации. Поскольку версия библиотеки SpeechRecognition не позволяет указать значение усиления, я обновил файл speech_recognition/__init__.py, указав жестко закодированное значение усиления:

        if preferred_phrases is not None:
            speech_config["speechContexts"] = {"phrases": preferred_phrases, "boost": 19}

К сожалению, когда я выполняю свой код, я получаю следующую ошибку:

Traceback (most recent call last):
  File "/home/pierre/.local/lib/python3.8/site-packages/speech_recognition/__init__.py", line 931, in recognize_google_cloud
    response = request.execute()
  File "/home/pierre/.local/lib/python3.8/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/home/pierre/.local/lib/python3.8/site-packages/googleapiclient/http.py", line 915, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://speech.googleapis.com/v1/speech:recognize?alt=json returned "Invalid JSON payload received. Unknown name "boost" at 'config.speech_contexts': Cannot find field.". Details: "[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'field': 'config.speech_contexts', 'description': 'Invalid JSON payload received. Unknown name "boost" at \'config.speech_contexts\': Cannot find field.'}]}]">

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "spech_reco.py", line 23, in <module>
    print(r.recognize_google_cloud(audio, language='fr-FR', preferred_phrases=['pistoles', 'disait'], credentials_json=j));
  File "/home/pierre/.local/lib/python3.8/site-packages/speech_recognition/__init__.py", line 933, in recognize_google_cloud
    raise RequestError(e)
speech_recognition.RequestError: <HttpError 400 when requesting https://speech.googleapis.com/v1/speech:recognize?alt=json returned "Invalid JSON payload received. Unknown name "boost" at 'config.speech_contexts': Cannot find field.". Details: "[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'field': 'config.speech_contexts', 'description': 'Invalid JSON payload received. Unknown name "boost" at \'config.speech_contexts\': Cannot find field.'}]}]">

В моем запросе есть ошибка?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
536
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Насколько я понимаю, вы модифицируете speech_recognition/__init__.py файл библиотеки SpeechRecognition, чтобы включить в свой запрос параметр «boost».

При просмотре этого файла я заметил, что он использует версию v1 API; однако параметр «boost» поддерживается только в версии «v1p1beta1»

Следовательно, еще одна адаптация, которую вы могли бы внести в код, заключается в следующем:

`speech_service = build ("speech","v1p1beta1", credentials = api_credentials, cache_discovery = False)`

С этой модификацией вы больше не должны видеть ошибку BadRequest.

В то же время учтите, что эта библиотека является сторонней библиотекой, внутри которой используется Google Speech-to-text API. Поэтому, если эта библиотека не покрывает все ваши текущие потребности, другой альтернативой может быть создание вашей собственной реализации напрямую с использованием клиентской библиотеки API Python для преобразования речи в текст .

Похоже на то вот так. Я пробовал много комбинаций, используя распознавание речи и параметр preferred_phrases и усиление звука, но ничего не получалось.

user7075574 03.01.2021 02:07

Другие вопросы по теме