private void button3_Click()

in nlsCsharpSdk/nlsCsharpSdkDemo/nlsCsharpSdkDemo.cs [658:755]


        private void button3_Click(object sender, EventArgs e)
        {
            int ret = -1;
            if (stList == null)
            {
                nlsResult.Text = "transcriber list is null, create first...";
                return;
            }
            else
            {
                if (File.Exists(cur_st_file_path))
                {
                }
                else
                {
                    cur_st_completed = "cannot open file: " + cur_st_file_path;
                    return;
                }

                LinkedListNode<DemoSpeechTranscriberStruct> stStruct = stList.First;
                int st_count = stList.Count;
                for (int i = 0; i < st_count; i++)
                {
                    DemoSpeechTranscriberStruct st = stStruct.Value;
                    if (st.stPtr.native_request != IntPtr.Zero)
                    {
                        if (appKey == null || appKey.Length == 0)
                        {
                            appKey = tAppKey.Text;
                        }
                        if (token == null || token.Length == 0)
                        {
                            token = tToken.Text;
                        }
                        if (appKey == null || token == null ||
                            appKey.Length == 0 || token.Length == 0)
                        {
                            nlsResult.Text = "Start failed, token or appkey is empty";
                            return;
                        }

                        st.stPtr.SetAppKey(st.stPtr, appKey);
                        st.stPtr.SetToken(st.stPtr, token);
                        st.stPtr.SetUrl(st.stPtr, url);
                        st.stPtr.SetFormat(st.stPtr, "pcm");
                        st.stPtr.SetSampleRate(st.stPtr, 16000);
                        st.stPtr.SetIntermediateResult(st.stPtr, true);
                        st.stPtr.SetPunctuationPrediction(st.stPtr, true);
                        st.stPtr.SetInverseTextNormalization(st.stPtr, true);

                        // 此处仅仅只是用unix时间戳作为每轮对话的session id
                        Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
                        st.stPtr.SetSessionId(st.stPtr, unixTimestamp.ToString());

                        st.stPtr.SetOnTranscriptionStarted(st.stPtr, DemoOnTranscriptionStarted, st.uuid);
                        st.stPtr.SetOnChannelClosed(st.stPtr, DemoOnTranscriptionClosed, st.uuid);
                        st.stPtr.SetOnTaskFailed(st.stPtr, DemoOnTranscriptionTaskFailed, st.uuid);
                        st.stPtr.SetOnSentenceBegin(st.stPtr, DemoOnSentenceBegin, st.uuid);
                        st.stPtr.SetOnSentenceEnd(st.stPtr, DemoOnSentenceEnd, st.uuid);
                        st.stPtr.SetOnTranscriptionResultChanged(st.stPtr, DemoOnTranscriptionResultChanged, st.uuid);

                        ret = st.stPtr.Start(st.stPtr);
                        if (ret != 0)
                        {
                            nlsResult.Text = "Transcriber Start failed";
                        }
                        else
                        {
                            if (globalRunParams[st.uuid].audio_loop_flag == false)
                            {
                                RunParams demo_params = new RunParams();
                                demo_params.audio_loop_flag = true;
                                demo_params.send_audio_flag = globalRunParams[st.uuid].send_audio_flag;

                                globalRunParams.Remove(st.uuid);
                                globalRunParams.Add(st.uuid, demo_params);

                                st.st_send_audio = new Thread(new ParameterizedThreadStart(STAudioLab));
                                st.st_send_audio.Start((object)st);

                                btnSTstart.Enabled = false;
                                btnSTstop.Enabled = true;
                            }

                            nlsResult.Text = "Transcriber Start success";
                        }
                    }
                    else
                    {
                    }
                    stStruct = stStruct.Next;
                    if (stStruct == null)
                    {
                        break;
                    }
                }
            }
        }