Распознавание речи - довольно хорошая библиотека, но мне тоже приходилось бороться с длиной записи. Вот как мне удалось обойти эту проблему:
Сохранение аудио на диск
with sr.AudioFile('path/to/audiofile.wav') as source:
audio = r.record(source)
Плюсы: запись в аудиофайл и последующая отправка более длинных фрагментов в Google позволили мне получить более стабильную продолжительность записи по сравнению с потоковой передачей.
Минусы: в зависимости от размера аудиофайла это может иметь недостаток в увеличении времени отклика до пары секунд, что может быть неприменимо в вашем случае.
Минимизация уровня шума
Вы, вероятно, уже хорошо знаете, что лучшее отношение сигнал-шум даст лучшую точность STT - но я также считаю, что это важно для хороших размеров фрагментов с библиотекой распознавания речи.
Дважды убедитесь, что ваш уровень шума легко отличим от вашего источника. Запись аудио также поможет вам решить эту проблему. Иногда звук может преждевременно обрезаться с помощью библиотеки распознавания речи, потому что он не может четко определить вашу речь.
Если улучшение качества или близости вашего микрофона невозможно, в библиотеку включен инструмент, который калибрует уровни звука для оптимального различения сигнал-шум.
Чтобы активировать эту функцию вместо строки:
audio=r.listen(source)
Попробуйте использовать:
audio=r.adjust_for_ambient_noise(source)
Имейте в виду, что в некоторых случаях эта функция добавляет небольшую задержку. В других случаях он будет продолжать слушать неопределенно долго, если вы подадите ему шумный звук.
Объединяя все это
with sr.AudioFile('path/to/audiofile.wav') as source:
audio = r.adjust_for_ambient_noise(source)
Вот отличное руководство для этой библиотеки - Окончательное руководство по распознаванию речи с Python