/// <summary>
        /// 待合成音频文本内容text设置.
        /// </summary>
        /// <param name="request">
        /// CreateSynthesizerRequest所建立的request对象.
        /// </param>
        /// <param name="value">
        /// 待合成文本字符串.
        /// </param>
        /// <returns>成功则返回0, 否则返回-1.</returns>
        public int SetText(SpeechSynthesizerRequest request, string value)
        {
            byte[] text     = Encoding.UTF8.GetBytes(value);
            UInt32 textSize = (UInt32)text.Length;

            return(NativeMethods.SYsetText(request.native_request, text, textSize));
        }
        /// <summary>
        /// 创建语音合成对象.
        /// </summary>
        /// <param name="version">
        /// tts类型, 短文本或长文本.
        /// </param>
        /// <returns></returns>
        public SpeechSynthesizerRequest CreateSynthesizerRequest(TtsVersion version)
        {
            IntPtr request = NativeMethods.NlsCreateSynthesizerRequest((int)version);
            SpeechSynthesizerRequest SYrequest = new SpeechSynthesizerRequest();

            SYrequest.native_request = request;
            return(SYrequest);
        }
        /// <summary>
        /// 设置文本对应的日志信息接收回调函数,
        /// 接收到服务端送回文本对应的日志信息,增量返回对应的字幕信息时,sdk内部线程上报该回调函数.
        /// </summary>
        /// <param name="request">
        /// CreateSynthesizerRequest所建立的request对象.
        /// </param>
        /// <param name="callback">
        /// 用户传入的回调函数.
        /// </param>
        /// <param name="para">
        /// 用户对象.
        /// </param>
        /// <returns></returns>
        public void SetOnMetaInfo(
            SpeechSynthesizerRequest 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.SYOnMetaInfo(request.native_request, onMetaInfo, (IntPtr)toCppParam);
            return;
        }
 /// <summary>
 /// 设置语音合成服务URL地址
 /// </summary>
 /// <param name="request">
 /// CreateSynthesizerRequest所建立的request对象.
 /// </param>
 /// <param name="value">
 /// 服务url字符串.
 /// </param>
 /// <returns>成功则返回0, 否则返回-1.</returns>
 public int SetUrl(SpeechSynthesizerRequest request, string value)
 {
     return(NativeMethods.SYsetUrl(request.native_request, value));
 }
 /// <summary>
 /// 直接关闭语音合成过程. 调用cancel之后不会在上报任何回调事件.
 /// </summary>
 /// <param name="request">
 /// CreateSynthesizerRequest所建立的request对象.
 /// </param>
 /// <returns>成功则返回0, 否则返回-1.</returns>
 public int Cancel(SpeechSynthesizerRequest request)
 {
     return(NativeMethods.SYcancel(request.native_request));
 }
 /// <summary>
 /// 会与服务端确认关闭, 正常停止语音合成操作. 异步操作, 失败返回TaskFailed.
 /// </summary>
 /// <param name="request">
 /// CreateSynthesizerRequest所建立的request对象.
 /// </param>
 /// <returns>成功则返回0, 否则返回-1.</returns>
 public int Stop(SpeechSynthesizerRequest request)
 {
     return(NativeMethods.SYstop(request.native_request));
 }
 /// <summary>
 /// 设置用户自定义ws阶段http header参数.
 /// </summary>
 /// <param name="request">
 /// CreateSynthesizerRequest所建立的request对象.
 /// </param>
 /// <param name="key">
 /// 参数名称.
 /// </param>
 /// <param name="value">
 /// 参数内容.
 /// </param>
 /// <returns>成功则返回0, 否则返回-1.</returns>
 public int AppendHttpHeaderParam(SpeechSynthesizerRequest request, string key, string value)
 {
     return(NativeMethods.SYappendHttpHeaderParam(request.native_request, key, value));
 }
 /// <summary>
 /// 设置Socket接收超时时间.
 /// </summary>
 /// <param name="request">
 /// CreateSynthesizerRequest所建立的request对象.
 /// </param>
 /// <param name="value">
 /// 超时时间.
 /// </param>
 /// <returns>成功则返回0, 否则返回-1.</returns>
 public int SetTimeout(SpeechSynthesizerRequest request, int value)
 {
     return(NativeMethods.SYsetTimeout(request.native_request, value));
 }
 /// <summary>
 /// 是否开启字幕功能.
 /// </summary>
 /// <param name="request">
 /// CreateSynthesizerRequest所建立的request对象.
 /// </param>
 /// <param name="value">
 /// </param>
 /// <returns>成功则返回0, 否则返回-1.</returns>
 public int SetEnableSubtitle(SpeechSynthesizerRequest request, bool value)
 {
     return(NativeMethods.SYsetEnableSubtitle(request.native_request, value));
 }
 /// <summary>
 /// 语调pitch_rate设置.
 /// </summary>
 /// <param name="request">
 /// CreateSynthesizerRequest所建立的request对象.
 /// </param>
 /// <param name="value">
 /// 语调, 范围是-500~500, 可选参数, 默认是0.
 /// </param>
 /// <returns>成功则返回0, 否则返回-1.</returns>
 public int SetPitchRate(SpeechSynthesizerRequest request, int value)
 {
     return(NativeMethods.SYsetPitchRate(request.native_request, value));
 }
 /// <summary>
 /// 销毁语音合成对象.
 /// </summary>
 /// <param name="request">
 /// CreateSynthesizerRequest所建立的request对象.
 /// </param>
 /// <returns></returns>
 public void ReleaseSynthesizerRequest(SpeechSynthesizerRequest request)
 {
     NativeMethods.NlsReleaseSynthesizerRequest(request.native_request);
     return;
 }