похоже, что вы потенциально отправляете кусок аудио странного размера в конце вашего потока. Не уверен, где это вписывается в весь контекст вашего WebSocket, поскольку это не упоминается в вопросе. Вот небольшой код, который работал у меня как для получения, так и для записи аудио:
while (!result.CloseStatus.HasValue)
{
byte[] audio;
while(_audioToWrite.TryDequeue(out audio))
{
const int bufferSize = 640;
for(var i = 0; i + bufferSize < audio.Length; i += bufferSize)
{
var audioToSend = audio[i..(i + bufferSize)];
var endOfMessage = audio.Length > (bufferSize + i);
await webSocket.SendAsync(new ArraySegment<byte>(audioToSend, 0, bufferSize), WebSocketMessageType.Binary, endOfMessage, CancellationToken.None);
}
}
result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
_inputStream.Write(buffer);
}
Это из слегка измененной версии сообщения в блоге, которое я написал по этому вопросу. Вы можете найти исходный код в GitHub . Это не использует услуги перевода, как вы, просто преобразовывает речь в текст - но это должно работать примерно так же. Вы также можете посмотреть запись в блоге .