private async void SendTTSData(TTSClient tts, string[] sentences) { foreach (var sentence in sentences) { await tts.DoTTS(config, sentence); } }
private async Task Stop() { timer.Stop(); if (!SREnded) { SREnded = true; //client?.EndAudio(); Console.WriteLine("Sending SR:End"); if (webSocket.State == WebSocketState.Open) { await Send("SR:End"); if (DoQuery != null && !String.IsNullOrWhiteSpace(lastestGuess)) { var ttsText = await DoQuery(Send, lastestGuess); lastestGuess = ""; var tts = new TTSClient(OnTTSData, () => { Console.WriteLine("TTS End"); }); var sentences = ttsText.Split(new char[] { ';', '。', '?', '?' }); SendTTSData(tts, sentences); } } } }
private async void SendTTSData(TTSClient tts, string[] sentences) { foreach (var sentence in sentences) { await tts.DoTTS(config.UnifiedKey, config.UnifiedRegion, sentence, config.Locale); } }
private async Task ReplyAndTTS(string srText) { if (DoQuery != null && !String.IsNullOrWhiteSpace(srText)) { var ttsText = await DoQuery(Send, srText); var tts = new TTSClient(OnTTSData, () => { Console.WriteLine("TTS End"); }); var sentences = ttsText.Split(new char[] { ';', '。', '?', '?' }); SendTTSData(tts, sentences); } }
public override void OnMessage(WebSocketReceiveResult result, ArraySegment <byte> arraySegment) { if (result.MessageType == System.Net.WebSockets.WebSocketMessageType.Text) { var text = Encoding.UTF8.GetString(arraySegment.Array ?? throw new InvalidOperationException(), arraySegment.Offset, arraySegment.Count); Console.WriteLine("WS Recieved: " + text); if (text == "[sr]end") { Stop().Wait(); } else if (text == "[sr]begin" || text == "[sr]begin-duplex") { lastestGuess = ""; SREnded = false; timer.Stop(); Console.WriteLine("Creating SRClient"); this._srClient.StartRecognition(text == "[sr]begin-duplex"); _stop = false; } else if (text.StartsWith("[tts]")) { string ttsText = text.Substring(5); var tts = new TTSClient(OnTTSData, () => { Console.WriteLine("TTS End"); }); var sentences = ttsText.Split(new char[] { ';', '。', '?', '?' }); SendTTSData(tts, sentences); } else { _OnMessage?.Invoke(Send, text); } } else if (result.MessageType == System.Net.WebSockets.WebSocketMessageType.Binary) { if (StreamLog) { Console.WriteLine("WS Recieved (bytes): " + arraySegment.Count); } if (!SREnded) { this._srClient.SendAudio(arraySegment.ToArray(), arraySegment.Count); totalBytes += arraySegment.Count; if (StreamLog) { Console.WriteLine("Sent {0}k bytes", totalBytes / 1024.0); } } } }
public override void OnOpen() { Console.WriteLine("WS Opened"); var ttsText = context.Request.Query["text"][0]; var tts = new TTSClient(OnTTSData, () => { Console.WriteLine("TTS End"); }); var sentences = ttsText.Split(new char[] { ';', '。', '?', '?' }); foreach (var sentence in sentences) { tts.DoTTS(config, sentence).Wait(); } webSocket.CloseAsync(WebSocketCloseStatus.Empty, "finished", CancellationToken.None).Wait(); }
public override void OnOpen() { Console.WriteLine("WS Opened"); var ttsText = context.Request.Query["text"][0]; var tts = new TTSClient(OnTTSData, () => { Console.WriteLine("TTS End"); }); var sentences = ttsText.Split(new char[] { ';', '。', '?', '?' }); foreach (var sentence in sentences) { tts.DoTTS(config.UnifiedKey, config.UnifiedRegion, sentence, config.Locale).Wait(); } try { webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "finished", CancellationToken.None).Wait(); } catch (Exception) { } }