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;
}
}
}
}