public Socket StartListen()
        {
            try
            {
                _listener.Start(_listenCount);
                _serverState   = ServerState.Started;
                _listenState   = ListenState.Listen;
                _clientHandler = _listener.AcceptSocket();
                _listenState   = ListenState.NoListen;
                _listener.Stop();

                OnClientConnectionStateChange(new ClientConnectionStateChangeEventArgs(), _cancelTask.Token);
            }
            catch (SocketException ex)
            {
            }
            catch (Exception ex)
            {
            }

            finally
            {
            }

            return(_clientHandler);
        }
 private void Connector_SessionStarted(object sender, SessionEventArgs e)
 {
     Debug.WriteLine($"SessionStarted event, id = {e.SessionId}");
     this.UpdateStatus("Listening ...");
     this.player.Stop();
     this.RunOnUiThread(() => this.ListeningState = ListenState.Listening);
 }
Exemple #3
0
        private void Connector_SessionStopped(object sender, SessionEventArgs e)
        {
            Debug.WriteLine($"SessionStopped event, id = {e.SessionId}");

            UpdateStatus("Stopped listening");
            listeningState = ListenState.NotListening;
        }
        private void StartListening()
        {
            if (this.ListeningState == ListenState.NotListening)
            {
                if (this.connector == null)
                {
                    this.InitSpeechConnector();
                }

                try
                {
                    // Bugbug: ListenOnceAsync() doesn't generate Session Started during KWS; if KWS is enabled, fake it here
                    if (this.settings.RuntimeSettings.WakeWordEnabled)
                    {
                        this.Connector_SessionStarted(null, null);
                    }
                    else
                    {
                        this.ListeningState = ListenState.Initiated;
                    }

                    this.connector.ListenOnceAsync();
                    System.Diagnostics.Debug.WriteLine("Started ListenOnceAsync");
                }
#pragma warning disable CA1031 // Do not catch general exception types
                catch (Exception ex)
                {
                    this.ShowException(ex);
                }
#pragma warning restore CA1031 // Do not catch general exception types
            }
        }
Exemple #5
0
        private void Connector_SessionStarted(object sender, SessionEventArgs e)
        {
            Debug.WriteLine($"SessionStarted event, id = {e.SessionId}");

            UpdateStatus("Listening ...");
            player.Stop();

            listeningState = ListenState.Listening;
        }
        public async Task Initialize()
        {
            // Default the language to English
            this.ListenState    = ListenState.Initializing;
            this.SourceLanguage = Language.English;
            try {
                await this.speechTranslateClient.Connect("en-US", "en", null, this.DisplayResult, this.SendAudioOut);

                var pcmEncoding = AudioEncodingProperties.CreatePcm(16000, 1, 16);

                var result = await AudioGraph.CreateAsync(
                    new AudioGraphSettings(AudioRenderCategory.Speech)
                {
                    DesiredRenderDeviceAudioProcessing = AudioProcessing.Raw,
                    AudioRenderCategory = AudioRenderCategory.Speech,
                    EncodingProperties  = pcmEncoding
                });

                if (result.Status == AudioGraphCreationStatus.Success)
                {
                    this.graph = result.Graph;

                    var microphone = await DeviceInformation.CreateFromIdAsync(((DeviceInformation)(await DeviceInformation.FindAllAsync(MediaDevice.GetAudioCaptureSelector())).First()).Id);

                    this.speechTranslateOutputMode = this.graph.CreateFrameOutputNode(pcmEncoding);
                    this.graph.QuantumProcessed   += (s, a) => this.SendToSpeechTranslate(this.speechTranslateOutputMode.GetFrame());

                    this.speechTranslateOutputMode.Start();

                    var micInputResult = await this.graph.CreateDeviceInputNodeAsync(MediaCategory.Speech, pcmEncoding, microphone);

                    if (micInputResult.Status == AudioDeviceNodeCreationStatus.Success)
                    {
                        micInputResult.DeviceInputNode.AddOutgoingConnection(this.speechTranslateOutputMode);
                        micInputResult.DeviceInputNode.Start();
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }

                    // start the graph
                    this.graph.Start();
                    this.ListenState = ListenState.NotListening;
                }
                else
                {
                    this.ListenState = ListenState.Error;
                }
            }
            catch (Exception e)
            {
                this.ListenState = ListenState.Error;
                Logger.GetInstance().LogLine(e.Message);
            }
        }
Exemple #7
0
        private void ServerStop()
        {
            CloseServer();
            listenState   = ListenState.UnListen;
            startBtn.Text = "启动";
            string curTime = DateTime.Now.ToString("yyyy-MM-dd  hh:mm:ss");

            listBox1.Items.Add(curTime + ":\r\n" + "服务端停止监听." + "\r\n");
            listBox1.SelectedIndex = listBox1.Items.Count - 1;
        }
        private void Connector_Canceled(object sender, SpeechRecognitionCanceledEventArgs e)
        {
            var err = $"Error {e.ErrorCode} : {e.ErrorDetails}";

            this.UpdateStatus(err);
            this.RunOnUiThread(() =>
            {
                this.ListeningState = ListenState.NotListening;
                this.Messages.Add(new MessageDisplay(err, Sender.Channel));
            });
        }
        private void startListenTimeout(TimeSpan timeout)
        {
            this.ListenState = ListenState.Listening;
            if (null != this.listenTimer)
            {
                this.listenTimer.Dispose();
                this.listenTimer = null;
            }

            this.listenTimer = new Timer(this.stopListen, this, (int)timeout.TotalMilliseconds, Timeout.Infinite);
            Logger.GetInstance().LogLine("Bamboo is listening.");
        }
Exemple #10
0
        private void Connector_SessionStopped(object sender, SessionEventArgs e)
        {
            var message = "Stopped listening";

            if (this.settings.Settings.WakeWordEnabled)
            {
                message = $"Stopped actively listening - waiting for '{this.activeWakeWordConfig.Name}'";
            }

            this.UpdateStatus(message);
            this.RunOnUiThread(() => this.ListeningState = ListenState.NotListening);
        }
        private void Connector_SessionStopped(object sender, SessionEventArgs e)
        {
            var message = "Stopped listening";

            Debug.WriteLine($"SessionStopped event, id = {e.SessionId}");

            if (this.settings.RuntimeSettings.Profile.WakeWordEnabled)
            {
                message = "Stopped actively listening - waiting for wake word";
            }

            this.UpdateStatus(message);
            this.RunOnUiThread(() => this.ListeningState = ListenState.NotListening);
        }
Exemple #12
0
 /// <summary>
 /// Starts or stops listening procedure
 /// </summary>
 /// <param name="start">Set true to start listening, othewise set false</param>
 /// <returns>Success if signalling was enabled, otherwise appropriate return code</returns>
 public TSessionError ListenReq(bool start)
 {
     if (!CAPI_Interface.IsRegistered)
     {
         return(TSessionError.Session_NotRegistered);
     }
     ;
     if (C_ListenState.ListenActive)
     {
         return(TSessionError.Listen_ListenActive);
     }
     ;
     ListenState.start_listen = start;
     ListenState.SM_Listen(C_ListenState.Listen_Events.LISTEN_REQ);
     return(TSessionError.Success);
 }
Exemple #13
0
        private void ServerStart()
        {
            ip         = ipTb.Text.Trim();
            port       = Convert.ToInt32(portTb.Text.Trim());//int.Parse(portTb.Text.Trim())
            listenFlag = true;

            try
            {
                //定义一个套接字用于监听客户端发来的信息  包含3个参数(IP4寻址协议,流式连接,TCP协议)
                socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint endPoint = null;

                //服务端发送信息 需要1个IP地址和端口号
                if (!string.IsNullOrEmpty(ip))
                {
                    IPAddress ipaddress = IPAddress.Parse(ip);  //获取文本框输入的IP地址
                    endPoint = new IPEndPoint(ipaddress, port); //获取文本框上输入的端口号
                }
                else
                {
                    //将IP地址和端口号绑定到网络节点endpoint上
                    endPoint = new IPEndPoint(IPAddress.Any, port);
                }

                //监听绑定的网络节点
                socketWatch.Bind(endPoint);
                //将套接字的监听队列长度限制为20
                socketWatch.Listen(20);
                //创建一个监听线程
                threadWatch = new Thread(WatchConnecting);
                //将窗体线程设置为与后台同步
                threadWatch.IsBackground = true;
                //启动线程
                threadWatch.Start();
                //启动线程后 txtMsg文本框显示相应提示
                listBox1.Items.Add("服务器开始监听客户端..." + "\r\n");
                listenState   = ListenState.Listening;
                startBtn.Text = "停止";
            }
            catch
            {
                listenState   = ListenState.UnListen;
                startBtn.Text = "启动";
                MessageBox.Show("启动服务器失败!", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
Exemple #14
0
        private void StartListening()
        {
            if (listeningState == ListenState.NotListening)
            {
                try
                {
                    listeningState = ListenState.Initiated;

                    _ = connector.ListenOnceAsync();

                    Debug.WriteLine("Started ListenOnceAsync");
                }
                catch (Exception ex)
                {
                    UpdateStatus(ex.Message);
                }
            }
        }
        private void Reset()
        {
            this.Messages.Clear();
            this.Activities.Clear();
            this.ListeningState = ListenState.NotListening;
            this.UpdateStatus("New conversation started");
            this.StopAnyTTSPlayback();
            this.InitSpeechConnector();

            var message = "New conversation started - type or press the microphone button";

            if (this.settings.RuntimeSettings.Profile.WakeWordEnabled)
            {
                message = $"New conversation started - type, press the microphone button, or say the wake word";
            }

            this.UpdateStatus(message);
        }
Exemple #16
0
        private async void SpeechManager_ListenStateChanged(object sender, ListenState e)
        {
            switch (e)
            {
            case ListenState.Initializing:
                await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    this.SpeechStatusTextBlock.Text = "Initializing";
                });

                break;

            case ListenState.Listening:
                await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    this.SpeechStatusTextBlock.Text = "Listening";
                    this.ledStrip?.SetLEDColor(10, Colors.Blue);
                    this.ledStrip?.Refresh();
                });

                break;

            case ListenState.NotListening:
                await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    this.SpeechStatusTextBlock.Text = "Not Listening";
                    this.ledStrip?.SetLEDColor(10, Colors.Black);
                    this.ledStrip?.Refresh();
                });

                break;

            case ListenState.Error:
                await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    this.SpeechStatusTextBlock.Text = "Error";
                });

                break;
            }
        }
Exemple #17
0
        private void Connector_Canceled(object sender, SpeechRecognitionCanceledEventArgs e)
        {
            if (e.Reason == CancellationReason.Error &&
                e.ErrorCode == CancellationErrorCode.ConnectionFailure &&
                e.ErrorDetails.Contains("1000"))
            {
                // Connection was closed by the remote host.
                // Error code: 1000.
                // Error details: Exceeded maximum websocket connection idle duration (>300000ms = 5 minutes).
                // A graceful timeout after a connection is idle manifests as an error but isn't an
                // exceptional condition -- we don't want it show up as a big red bubble!
                UpdateStatus("Active connection timed out but ready to reconnect on demand.");
            }
            else
            {
                var statusMessage = $"Error ({e.ErrorCode}): {e.ErrorDetails}";
                UpdateStatus(statusMessage);
                listeningState = ListenState.NotListening;

                AddMessage(new MessageDisplay(statusMessage, Sender.Channel));
            }
        }
Exemple #18
0
        public void SetSessionListenState(ListenState state, ISession session)
        {
            switch (state)
            {
            case ListenState.Listening:
                lock (listen_sync)
                {
                    listened.Add(session);
                }
                break;

            case ListenState.NotListening:
                lock (listen_sync)
                {
                    if (listened.Contains(session))
                    {
                        listened.Remove(session);
                    }
                }
                break;
            }
        }
        private void StartListening()
        {
            if (this.ListeningState == ListenState.NotListening)
            {
                if (this.connector == null)
                {
                    this.InitSpeechConnector();
                }

                try
                {
                    this.ListeningState = ListenState.Initiated;

                    this.connector.ListenOnceAsync();
                    System.Diagnostics.Debug.WriteLine("Started ListenOnceAsync");
                }
#pragma warning disable CA1031 // Do not catch general exception types
                catch (Exception ex)
                {
                    this.ShowException(ex);
                }
#pragma warning restore CA1031 // Do not catch general exception types
            }
        }
 private void stopListen(object state)
 {
     this.ListenState = ListenState.NotListening;
     Logger.GetInstance().LogLine("Bamboo is no longer listening.");
 }
 protected override void OnListeningStarted(ListenState state)
 {
     // Execute on the loop thread
     this.Worker.EnqueueJob(this.StartListeningCallback, state);
 }
 public void SetSessionListenState(ListenState state, ISession session)
 {
     switch (state)
     {
         case ListenState.Listening:
             lock (listen_sync)
             {
                 listened.Add(session);
             }
             break;
         case ListenState.NotListening:
             lock (listen_sync)
             {
                 if (listened.Contains(session))
                     listened.Remove(session);
             }
             break;
     }
 }
 public void Initiallize()
 {
     _listenState = ListenState.NoListen;
     _serverState = ServerState.Stopped;
 }
Exemple #24
0
 private void Connector_SessionStarted(object sender, SessionEventArgs e)
 {
     this.UpdateStatus("Listening ...");
     this.RunOnUiThread(() => this.ListeningState = ListenState.Listening);
 }