/// <summary> /// 创建实时音频流识别对象. /// </summary> /// <returns>成功返回SpeechTranscriberRequest对象, 否则返回NULL.</returns> public SpeechTranscriberRequest CreateTranscriberRequest() { IntPtr request = NativeMethods.NlsCreateTranscriberRequest(); SpeechTranscriberRequest STrequest = new SpeechTranscriberRequest(); STrequest.native_request = request; return(STrequest); }
/// <summary> /// 设置一句话结束回调函数, 检测到了一句话的结束时, sdk内部线程上报该回调. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="callback"> /// 用户传入的回调函数. /// </param> /// <param name="para"> /// 用户对象. /// </param> /// <returns></returns> public void SetOnSentenceEnd( SpeechTranscriberRequest request, CallbackDelegate callback, object para = null) { SpeechParamStruct user_param = new SpeechParamStruct(); user_param.user = para; user_param.callback = callback; user_param.nlsEvent = new NLS_EVENT_STRUCT(); IntPtr toCppParam = Marshal.AllocHGlobal(Marshal.SizeOf(user_param)); Marshal.StructureToPtr(user_param, toCppParam, false); NativeMethods.STOnSentenceEnd(request.native_request, onSentenceEnd, (IntPtr)toCppParam); return; }
/// <summary> /// 会与服务端确认关闭, 正常停止实时音频流识别操作. 异步操作, 失败返回TaskFailed. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int Stop(SpeechTranscriberRequest request) { return(NativeMethods.STstop(request.native_request)); }
/// <summary> /// 设置用户自定义ws阶段http header参数 /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int AppendHttpHeaderParam(SpeechTranscriberRequest request, string key, string value) { return(NativeMethods.STappendHttpHeaderParam(request.native_request, key, value)); }
/// <summary> /// 设置用户自定义参数 /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// value json格式字符串, 类似"{\"network\":{\"ip\":\"100.101.102.103\"}}". /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetContextParam(SpeechTranscriberRequest request, string value) { return(NativeMethods.STsetContextParam(request.native_request, value)); }
/// <summary> /// 设置输出文本的编码格式 /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// value 编码格式 UTF-8 or GBK. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetOutputFormat(SpeechTranscriberRequest request, string value) { return(NativeMethods.STsetOutputFormat(request.native_request, value)); }
/// <summary> /// 设置session id.用于请求异常断开重连时,服务端识别是同一个会话 /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// value session id 字符串. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetSessionId(SpeechTranscriberRequest request, string value) { return(NativeMethods.STsetSessionId(request.native_request, value)); }
/// <summary> /// 销毁实时音频流识别对象. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <returns></returns> public void ReleaseTranscriberRequest(SpeechTranscriberRequest request) { NativeMethods.NlsReleaseTranscriberRequest(request.native_request); return; }
/// <summary> /// 设置Socket接收超时时间. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// 超时时间. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetTimeout(SpeechTranscriberRequest request, int value) { return(NativeMethods.STsetTimeout(request.native_request, value)); }
/// <summary> /// 设置vad阀值. 可选参数, 静音时长超过该阈值会被认为断句. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// vad阀值. 合法参数范围200~2000(ms), 默认值800ms. /// vad断句与语义断句为互斥关系, 不能同时使用. 调用此设置前, 请将语义断句setSemanticSentenceDetection设置为false. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetMaxSentenceSilence(SpeechTranscriberRequest request, int value) { return(NativeMethods.STsetMaxSentenceSilence(request.native_request, value)); }
/// <summary> /// 设置是否使用语义断句. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// 可选参数, 默认false. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetSemanticSentenceDetection(SpeechTranscriberRequest request, bool value) { return(NativeMethods.STsetSemanticSentenceDetection(request.native_request, value)); }
/// <summary> /// 设置是否在后处理中执行数字转换. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// 可选参数, 默认false. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetInverseTextNormalization(SpeechTranscriberRequest request, bool value) { return(NativeMethods.STsetInverseTextNormalization(request.native_request, value)); }
/// <summary> /// 设置是否在后处理中添加标点. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// 可选参数, 默认false. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetPunctuationPrediction(SpeechTranscriberRequest request, bool value) { return(NativeMethods.STsetPunctuationPrediction(request.native_request, value)); }
/// <summary> /// 设置是否返回中间识别结果. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// 可选参数, 默认false. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetIntermediateResult(SpeechTranscriberRequest request, bool value) { return(NativeMethods.STsetIntermediateResult(request.native_request, value)); }
/// <summary> /// 设置音频数据采样率. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// 目前支持16000, 8000. 默认是1600. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetSampleRate(SpeechTranscriberRequest request, int value) { return(NativeMethods.STsetSampleRate(request.native_request, value)); }
/// <summary> /// 直接关闭实时音频流识别过程. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int Cancel(SpeechTranscriberRequest request) { return(NativeMethods.STcancel(request.native_request)); }
/// <summary> /// 发送语音数据. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="data"> /// 语音数据. /// </param> /// <param name="dataSize"> /// 语音数据长度(建议每次100ms左右数据). /// </param> /// <param name="type"> /// ENCODER_NONE 表示原始音频进行传递, 建议每次100ms音频数据,支持16K和8K; /// ENCODER_OPU 表示以定制OPUS压缩后进行传递, 只支持20ms 16K16b1c; /// ENCODER_OPUS 表示以OPUS压缩后进行传递, 只支持20ms, 支持16K16b1c和8K16b1c. /// </param> /// <returns> /// 成功则返回0, 失败返回-1. /// 由于音频格式不确定, 传入音频字节数和传出音频字节数, 无法通过比较判断成功与否, 故成功返回0. /// </returns> public int SendAudio(SpeechTranscriberRequest request, byte[] data, UInt64 dataSize, EncoderType type) { return(NativeMethods.STsendAudio(request.native_request, data, dataSize, (int)type)); }
/// <summary> /// 设置是否开启nlp服务. /// </summary> /// <param name="request"> /// CreateTranscriberRequest所建立的request对象. /// </param> /// <param name="value"> /// 可选参数, 默认false. /// </param> /// <returns>成功则返回0, 否则返回-1.</returns> public int SetEnableNlp(SpeechTranscriberRequest request, bool value) { return(NativeMethods.STsetEnableNlp(request.native_request, value)); }