2013-12-12 2 views
10

Я хотел бы посмотреть, можно ли иметь прямой доступ к Opus, используя getUserMedia или что-то похожее из последних браузеров.Как я могу использовать Opus Codec из JavaScript

Я занимаюсь этим много, но без хороших результатов.

Я знаю, что либо Opus, либо Speex фактически используются в API webkitSpeechRecognition. Я хотел бы сделать распознавание речи, но используя собственный сервер, а не Google.

ответ

11

Так что есть много предложений о Emscripten, но никто этого не делал, поэтому я поместил кодировщик opus-tools в JavaScript с помощью Emscripten. В зависимости от того, что имеется в виду, в настоящее время имеются следующие возможности:

+0

Вау! Это потрясающе. Отмечая это как принятый ответ, хотя я его не тестировал! –

+0

@OmarIthawi Спасибо. Проверьте [это демо] (https://blog.rillke.com/opusenc.js/) и [сообщить об ошибках] (https://github.com/Rillke/opusenc.js/issues) или скажите мне, как сделать это более удивительно. –

3

К сожалению, в настоящее время невозможно получить доступ к кодекам браузера непосредственно из JavaScript для кодирования. Единственный способ сделать это - использовать WebRTC и настроить запись на сервере. Я пробовал это, компилируя libjingle с другим кодом из Chromium, чтобы запустить его на сервере Node.js ... это почти невозможно.

Единственное, что вы можете сделать в настоящее время - отправить необработанные данные PCM на ваш сервер. Это занимает довольно много полосы пропускания, но вы можете свести к минимуму это путем преобразования образцов float32 до 16 бит (или 8 бит, если ваше распознавание речи может справиться с этим).

Надеюсь, API-интерфейс медиа-рекордера скоро появится, поэтому мы сможем использовать кодеки браузера.

+0

Спасибо много. Я думаю, что дошел до уровня HTML5. К сожалению, я вернусь к флэш-решению с использованием 'rtmp'. –

+0

Печально то, что у Google уже есть это в двух компонентах 'x-webkit-speech' и' webkitSpeechRecognition', я бы хотел, чтобы они просто разрешили изменять сервер. Это действительно решит мою проблему. –

+0

@OmarIthawi Я действительно не согласен с тем, что API распознавания речи - это то, где это должно быть сделано. Я могу представить себе случай, когда распознавание речи может выполняться самим браузером, не отправляя его на какой-либо сервер где-нибудь. API Media Recorder API - это то, где вам нужно немедленно выполнить эту задачу. В противном случае было бы полезно, если бы вы могли переопределить распознавание речи через плагин браузера. – Brad

3

Это не полное решение, ответ Брэда на самом деле является правильным в настоящее время.

Один из способов сделать это, чтобы скомпилировать Opus to Emscripten и надеемся, что ваш компьютер сможет обрабатывать кодировку с использованием JavaScript. Другой альтернативой является использование speex.js.

4

Мы используем emscripten для кодирования и декодирования с использованием gsm610 с помощью getUserMedia, и он работает невероятно хорошо, даже на мобильных устройствах. В эти дни javascript дает почти собственную производительность, поэтому emscripten жизнеспособен для компиляции кодеков. Единственная проблема - потенциально очень большие .js-файлы, поэтому вы хотите компилировать только те части, которые вы используете.

+1

Теперь наша единственная задача - найти бесплатный видеокодек с открытым исходным кодом, который будет работать с getUserMedia. – CpnCrunch

 Смежные вопросы

  • Нет связанных вопросов^_^