Как стать автором
Обновить

Комментарии 9

декодированный аудиопоток в формате JSON

Простите, что? Я всё правильно понял — вы заворачиваете бинарные данные в JSON, неважно каким способом? Что мешает посылать напрямую бинарные данные? Зачем так жёстко греть процессор?
Работать с текстовыми данными проще + их поддерживает большее количество серверных библиотек. К тому же Base64 обычно либо реализован железно, либо неплохо оптимизирован на SIMD-инструкциях.

Ну и да, таким образом мы можем слать несколько аудиоканалов (например, по одному каналу от каждого из участников) в одном потоке, вместо того чтобы использовать бинарный протокол, от которого веб-разработчики часто не в восторге.
от которого веб-разработчики часто не в восторге

Веб-разработчики и от чистого JS часто не в восторге, а потом получаем пейсбук, посетив которой можно отопить процессором как минимум свою комнату.
Может оффтопик конечно: С Google Speech To Text API есть нюанс, нельзя просто создать recognizeStream и долго долго слать туда аудио поток — через минуту все сломается, т.к. API имеет лимиты на максимальную длительность аудио потока, как раз в эту самую минуту (несмотря на то что в документации указан лимит в 5 минут, я получал ошибку через 1 минуту, уж не знаю почему так). В связи с чем приходится сильно усложнять логику работы с API, а именно буферизировать аудио пакеты и отслеживать какие из них уже были распознаны, а какие нет. Лично у меня только раза с 3-го получилась рабочая версия, действительно умеющая работать с бесконечным аудио потоком.
Да, вы абсолютно правы, у гугла есть такой дедлайн. Мы здесь его не учитываем, поскольку цель была показать работу сокетов на простом примере, а для этого минуты в принципе достаточно. Но спасибо за дополнение, будет полезно всем, кто заинтересуется подробнее!
У меня два вопроса
Зачем все так сложно?
Почему в twilio все так просто?
Действительно ли в Twilio все так просто: www.twilio.com/blog/live-transcribing-phone-calls-using-twilio-media-streams-and-google-speech-text ?)
А вообще, если хотите проще, попробуйте модуль ASR. Об этом есть пометка в начале статьи.
О ASR выглядит для меня лучше, спасибо!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий