こんばんは。
私はc#で、websocket対応の音声認識APIで文字起しをしようとしています。
このAPIによると、順次音声データ(バイナリ)を送れば、その時点での認識結果を返してくれます。
私は以下のようなコードで連続的にデータを送っているのですが、途中の認識結果を得ることができず、
最終の認識結果しか得られません。
原因としてこのデータを送る部分が不適切なのかと思っていますが、どう悪いのかよくわかりません。
websocketに関してあまり詳しくなく、おかしな部分があるのだと思いますが、ご教授のほどよろしくお願いします。
csharp
1static async Task Send(ClientWebSocket ws) 2 { 3 ArraySegment<byte> closingMessage = new ArraySegment<byte>(Encoding.UTF8.GetBytes( 4 "{\"command\": \"recog-break\"}" 5 )); 6 using (FileStream fs = File.OpenRead("voice.raw")) 7 { 8 byte[] b = new byte[3200]; 9 while (fs.Read(b, 0, b.Length) > 0) 10 { 11 ws.SendAsync(new ArraySegment<byte>(b), WebSocketMessageType.Binary, true, CancellationToken.None); 12 } 13 await ws.SendAsync(closingMessage, WebSocketMessageType.Text, true, CancellationToken.None); 14 } 15 }
最後に、音声データの終了をAPIに知らせるために、recog-break
コマンドを送っています。
回答1件
あなたの回答
tips
プレビュー