Распознавание речи в автономном режиме в браузере
Я работаю над продуктом, который должен принимать входные данные от пользователя и выполнять определенные действия на его основе. Мы реализовали это с помощью окна чата с помощью набора текста, и это служит нашей цели. В будущих выпусках мы хотим добавить распознавание голоса в окне чата. Мы думали об использовании
window.speechRecognition() || window.webkitSpeechRecognition()
но мы узнали, что функционально доступные в браузерах используют Google Cloud Speech API. Поскольку мы имеем дело с очень конфиденциальной информацией пользователей, это будет проблемой безопасности. Есть ли другие альтернативы для реализации распознавания речи, которые работают в любых браузерах.
5 ответов
Ты можешь попробовать:
- Snowboy, нет wav хранятся на сервере. Они тренируют NN для вас, и вы можете скачать вес модели.
- Tensorflow: Это действительно здорово, но требует немного работы на вашей стороне. Успешные проекты для TTS - DeepSpeech и связанные с ним.
Используйте tenorflowjs модель "tfjs" самое разумное решение, которое работает в браузере
Распознаватель речевых команд Распознаватель речевых команд - это модуль JavaScript, который позволяет распознавать произносимые команды, состоящие из простых изолированных английских слов, из небольшого словаря.
На этот вопрос нет хорошего ответа, но на данный момент (август 2023 г.) лучшим вариантом для распознавания речи в автономном режиме является использование реализации модели OpenAI Whisper, скомпилированной в WebAssembly. Мне известны три:
Обратите внимание, что это все еще не лучший вариант по нескольким причинам:
- размер загрузки: поскольку он не встроен в браузер, он требует, чтобы браузер загрузил большой файл модели (абсолютный минимум 31 МБ для квантованной «крошечной» модели)
- качество: существует довольно прямой компромисс между размером модели и качеством. Только самые крошечные квантованные модели даже близки к разумному для загрузки на большинстве веб-страниц, и с ними вы не получите первоклассных результатов. Даже самые большие модели, которые вы можете загрузить в браузер (вероятно, маленькие, возможно, со средним квантованием или, если вы действительно смелы/мазохисты, возможно, попробуйте «большие» квантованные... но они размером более 1 ГБ) не будут работать. быть такими же хорошими, как большие неквантованные модели, которые могут разумно работать только на сервере. И даже если вы загрузите эти модели, их будет не хватать...
- Скорость вывода: крошечная модель едва справляется с транскрипцией в реальном времени на относительно новом/мощном ноутбуке или настольном компьютере (она не совсем справляется с моим старым ноутбуком X1 Carbon 7-го поколения). Скорее всего, на большинстве мобильных устройств он будет значительно отставать. А более крупные модели будут еще медленнее. Для меня это самая большая проблема. Попробуйте сами, посмотрев демо-версию стрима Герганова.
- Сложность: запуск любого из них в вашем собственном проекте не совсем прост и, как правило, гораздо более низкий уровень, чем API распознавания речи в Интернете. Например, ядро реализации Transforms.js, которая кажется самой простой, имеет размер более 100LOC (и он обрабатывает только предварительно записанные файлы, а не транскрипцию в реальном времени).
Дополнительная сложность отчасти связана с тем, что модели такого типа обычно работают порциями. Для более длинных аудиофайлов, особенно для транскрипции в реальном времени, мы хотим, чтобы непрерывный поток звука создавал непрерывный поток выходного текста. API веб-распознавания речи сделает это за вас, а с помощью Whisper вам придется разбивать на части самостоятельно (и иметь дело с такими вещами, как перекрытие окон или исправленная транскрипция уже увиденных слов).
Хорошее описание некоторых из этих проблем, связанных с использованием API модели распознавания речи нижнего уровня, можно найти в README движка Google Live Transcribe Speech Engine с открытым исходным кодом.[1]
В общем, было бы здорово, если бы мы могли просто использовать сам API веб-распознавания речи с автономной моделью, встроенной в браузер, но я не видел в последнее время какого-либо движения в этом направлении.[2][3] Если вы можете принять ограничения, Whisper может стать работоспособной альтернативой (а если вы хотите создать полифил Web Speech API, я уверен, что это будет очень признательно!)
[1]: В объявлении об этой библиотеке Google признал сложности, связанные с использованием онлайн-системы. К сожалению, несмотря на название, этот проект на самом деле не то, что я бы назвал «движком речи в реальном времени», а библиотека для живой транскрипции с использованием API облачной транскрипции Google.
[2]: на самом деле Chrome поставляет библиотеку для автономной транскрипции под названием libSODA (Speech On-Device), но изначально она была выпущена для функции Live Caption и, похоже, до сих пор не используется для голосовой связи с пользователем. печатать. Неудивительно, что «команда Speech была обеспокоена несанкционированным перепрофилированием своих компонентов», поэтому в ближайшем будущем мы можем ожидать отсутствия широкой доступности для использования речи в тексте.
[3]: В какой-то момент Mozilla создавала движок преобразования речи в текст под названием DeepSpeech для встраивания в Firefox, но, очевидно, прекратила разработку. Некоторые бывшие члены команды DeepSpeech создали форк проекта и какое-то время продолжали работать под названиемCoqui AI STT, но с тех пор отказались от этой работы и рекомендуют вместо этого использовать Whisper.
По-видимому PocketSphinx.js
это единственный доступный путь на данный момент. Это средство преобразования текста в текст с открытым исходным кодом, которое поддерживает английский, но не так много языков.
Github:
Однако, если вы хотите запустить свой код на одном экземпляре устройства Android (например, устройства, отображаемого где-то в общедоступной области), вы можете использовать "Загрузить автономный язык распознавания голоса" в настройках мобильного Chrome. Для настольного браузера такой опции нет.
Вы можете воспользоваться услугой IBM Watson Speech To Text. Его можно использовать из любого браузера, и вы можете отказаться, чтобы данные пользователя не регистрировались на стороне сервера: https://console.bluemix.net/docs/services/watson/getting-started-logging.html
Демо-версия сервиса находится здесь: https://speech-to-text-demo.ng.bluemix.net/
Он работает по крайней мере в Firefox и Chrome, он основан на следующем SDK с открытым исходным кодом: https://github.com/watson-developer-cloud/speech-javascript-sdk
пс. В общем случае, когда пользовательские данные не являются конфиденциальными, лучше не отказываться, чтобы Watson мог использовать данные для улучшения качества обслуживания.