В C#я использую распознавание речи Google (потоковая передача/в режиме реального времени, а не через предварительно записанные аудиофайлы). Потоковое звук поступает от телефонного звонка Twilio. < /P>
90% случаев, он работает безупречно. что Google отправляет мне. Я добавил дополнительные журналы для хранения полученной полезной нагрузки, чтобы увидеть, что отправляет Google, когда пройдчик JSON проходит, и это: < /p>
{"event":"media","sequenceNumber":"12","media":{"track":"inbound","chunk":"11","timestamp":"309",
"payload":"////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////
< /code>
Это буквально все. Значение «полезной нагрузки» - это всего лишь куча чертов, и оно не заканчивается должным образом. Это слушает речь, которая будет транслироваться в него: < /p>
Grpc.Core.RpcException: Status(StatusCode="OutOfRange",
Detail="Audio Timeout Error: Long duration elapsed without
audio. Audio should be sent close to real time."
< /code>
Ошибка тайм -аута звука странная, потому что в телефонном разговоре, похоже, нет каких -либо серьезных пробелов. Каждый из сеансов WebSocket WebSocket Discocket Google продерживался не более чем на несколько секунд (вопрос задается Twilio, открывается WebSocket to Google, Google слушает «да» или речь «нет» от пользователя, Google транскрибирует его и и Это повторяется x количество раз). < /p>
Вот фрагмент C#< /p>
private async Task ProcessAudioStream_English(AspNetWebSocketContext context)
{
string jsonData = ""; //NEW - for debugging/exception catching
try
{
WebSocket webSocket = context.WebSocket;
string streamSid = null;
var buffer = new byte[1024 * 4];
var receiveResult = await webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);
var _speechRecognitionService = new GoogleSpeechRecognition();
string lang = "en-US";
Debug.WriteLine($"Language: {lang}");
while (!receiveResult.CloseStatus.HasValue)
{
jsonData = Encoding.UTF8.GetString(buffer, 0, receiveResult.Count);
var jsonDocument = JsonDocument.Parse(jsonData); //
Подробнее здесь: [url]https://stackoverflow.com/questions/79412292/google-speech-to-text-sometimes-responds-with-invalid-json[/url]
В C#я использую распознавание речи Google (потоковая передача/в режиме реального времени, а не через предварительно записанные аудиофайлы). Потоковое звук поступает от телефонного звонка Twilio. < /P> 90% случаев, он работает безупречно. что Google отправляет мне. Я добавил дополнительные журналы для хранения полученной полезной нагрузки, чтобы увидеть, что отправляет Google, когда пройдчик JSON проходит, и это: < /p> [code]{"event":"media","sequenceNumber":"12","media":{"track":"inbound","chunk":"11","timestamp":"309", "payload":"//////////////////////////////////////// //////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////// < /code> Это буквально все. Значение «полезной нагрузки» - это всего лишь куча чертов, и оно не заканчивается должным образом. Это слушает речь, которая будет транслироваться в него: < /p> Grpc.Core.RpcException: Status(StatusCode="OutOfRange", Detail="Audio Timeout Error: Long duration elapsed without audio. Audio should be sent close to real time." < /code> Ошибка тайм -аута звука странная, потому что в телефонном разговоре, похоже, нет каких -либо серьезных пробелов. Каждый из сеансов WebSocket WebSocket Discocket Google продерживался не более чем на несколько секунд (вопрос задается Twilio, открывается WebSocket to Google, Google слушает «да» или речь «нет» от пользователя, Google транскрибирует его и и Это повторяется x количество раз). < /p> Вот фрагмент C#< /p> private async Task ProcessAudioStream_English(AspNetWebSocketContext context) { string jsonData = ""; //NEW - for debugging/exception catching
try { WebSocket webSocket = context.WebSocket;
string streamSid = null; var buffer = new byte[1024 * 4];
var receiveResult = await webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);
var _speechRecognitionService = new GoogleSpeechRecognition();
string lang = "en-US"; Debug.WriteLine($"Language: {lang}");
while (!receiveResult.CloseStatus.HasValue) { jsonData = Encoding.UTF8.GetString(buffer, 0, receiveResult.Count); var jsonDocument = JsonDocument.Parse(jsonData); //