Watson Speech в текст и JavaScriptC#

Место общения программистов C#
Ответить
Гость
 Watson Speech в текст и JavaScript

Сообщение Гость »


Я застрял в этой помощи. Контекст приложения: у меня есть страница бритвы (.NET), на которой, когда пользователь нажимает кнопку «Пуск», она вызывает метод в файле js (я не использовал C#, потому что мог найти аудиозаписывающее устройство).

В js я инициализирую соединение веб-сокета с помощью речи Watson API в текст. Сначала я отправил в API статический аудиофайл, чтобы проверить, работает ли он нормально, и получил ответ от API, но это не то, для чего предназначено приложение.

Проблема, с которой я столкнулся, заключается в том, что я хочу отправить звук в реальном времени и получить ответ, а не статический файл. Я думаю, что именно это я и делаю в методе startRecord, но получаю сообщение об ошибке от API, в котором говорится, что отправленный мною поток имеет размер 0 байт. Мысль в том, что я печатаю объект blob и каждый раз вижу, что его размер не равен 0. Кто-то, кто поможет; это сводит меня с ума. Вот код:
var BlazorAudioRecorder = {}; (функция () { вар mStream; вар mAudioChunks; вар mMediaRecorder; вар mCaller; пусть финалы = []; пусть последний = ноль; const accessToken = 'токен'; // Замените своим токеном доступа IBM Watson const serviceUrl = "wss://api.eu-gb.speech-to-text.watson.cloud.ibm.com/instances/e9798515-10c8-4878-9cf6-69e493f25945/v1/recouncee?access_token=" + accessToken + "&model=en-US_NarrowbandModel"; константное открытиеMessage = { «действие»: «начать», 'тип контента': 'audio/webm;rate=22050', // 'непрерывный': правда, // 'время_бездействия': -1 }; const closeMessage = { действие: «стоп» }; пусть WS; BlazorAudioRecorder.Initialize = функция (vCaller) { mCaller = vCaller; ws = новый WebSocket (serviceUrl); ws.onopen = функция (событие) { console.log("Соединение WebSocket открыто:", event); ws.send(JSON.stringify(openingMessage)); }; ws.onmessage = функция (событие) { данные вар = JSON.parse(event.data); // Проверяем, есть ли результаты в сообщении if ('результаты' в данных) { вар результаты = data.results; for (var я = 0; я { если (vEvent.data.size > 0) { если (ws.readyState === WebSocket.OPEN) { пытаться { ws.send(vEvent.data, {маска: true}); console.log(vEvent.data); } поймать (ошибка) { console.error('Ошибка отправки аудиоданных:', error); } } mAudioChunks.push(vEvent.data); } }); mMediaRecorder.addEventListener('error', (vError) => { console.warn('Ошибка медиа-рекордера: ' + vError); }); mMediaRecorder.addEventListener('stop', () => { вар pAudioBlob = новый Blob (mAudioChunks, {type: "audio/webm;" }); вар pAudioUrl = URL.createObjectURL(pAudioBlob); mCaller.invokeMethodAsync('OnAudioUrl', pAudioUrl); }); mAudioChunks = []; mMediaRecorder.start(); }; асинхронная функция HandleResults (событие) { константные данные = JSON.parse(event.data); if («результаты» в данных) { если (data.results[0].final) { Finals.push(данные); последний = ноль; } еще { последний = данные; } // Это распечатывает текущий фрагмент, над которым мы работаем console.log(data.results[0].alternatives[0].transcript); } } BlazorAudioRecorder.StopRecord = функция () { mMediaRecorder.stop(); mStream.getTracks().forEach(pTrack => pTrack.stop()); ws.send(JSON.stringify(closingMessage)); ws.onclose = функция (событие) { console.log("Соединение WebSocket закрыто:", event); }; }; BlazorAudioRecorder.DownloadBlob = функция (vUrl, vName) { // Создаем элемент ссылки константная ссылка = документ
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»