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);
                    }
                }
            }
        }
Esempio n. 3
0
 private async void SendTTSData(TTSClient tts, string[] sentences)
 {
     foreach (var sentence in sentences)
     {
         await tts.DoTTS(config.UnifiedKey, config.UnifiedRegion, sentence, config.Locale);
     }
 }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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();
        }
Esempio n. 7
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.UnifiedKey, config.UnifiedRegion, sentence, config.Locale).Wait();
            }
            try
            {
                webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "finished", CancellationToken.None).Wait();
            }
            catch (Exception)
            { }
        }