Пример #1
0
 /// <summary>
 /// 合成语音到文件
 /// </summary>
 /// <param name="txt">要合成的文本</param>
 /// <param name="fName">保存的文件</param>
 private async Task TTStoFile(string text, string fName)
 {
     await Task.Factory.StartNew(() =>
     {
         if (!SDKRealize.GetInitialize().IsLogin)
         {
             SDKRealize.GetInitialize().MSPLogin();
         }
         int eCode     = -1; //错误码
         var sessionId = SDKRealize.GetInitialize().TTSSessionBegin(ttsSessionParam, ref eCode);
         if (eCode == 0)
         {
             uint textLen    = (uint)Encoding.Default.GetBytes(text).Length;
             bool isSuccess1 = SDKRealize.GetInitialize().TTSTextPut(sessionId, text, textLen, null);
             if (isSuccess1)
             {
                 uint audioLen   = 0;  //返回的音频字节长度
                 int synthStatus = 0;  //返回的合成状态
                 int eCode1      = -1; //返回的合成音频错误码
                 byte[] bytes    = SDKRealize.GetInitialize().TTSAudioGet(sessionId, ref audioLen, ref synthStatus, ref eCode1);
                 if (eCode1 == 0)
                 {
                     using (FileStream fs = new FileStream(fName, FileMode.Create, FileAccess.Write))
                     {
                         fs.Write(bytes, 0, bytes.Length);
                     }
                 }
             }
         }
         SDKRealize.GetInitialize().TTSSessionEnd(sessionId, null);
     });
 }
Пример #2
0
        /// <summary>
        /// 合成到文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void button1_Click(object sender, EventArgs e)
        {
            string text     = this.textBox1.Text;
            string fileName = SDKRealize.GetInitialize().TTSdir + this.textBox2.Text + ".wav";

            await TTStoFile(text, fileName);
        }
Пример #3
0
        /// <summary>
        /// 合成测试(不保存,合成完立即播放)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            if (!SDKRealize.GetInitialize().IsLogin)
            {
                SDKRealize.GetInitialize().MSPLogin();
            }
            int eCode     = -1; //错误码
            var sessionId = SDKRealize.GetInitialize().TTSSessionBegin(ttsSessionParam, ref eCode);

            if (eCode == 0)
            {
                string text       = this.textBox4.Text;
                uint   textLen    = (uint)Encoding.Default.GetBytes(text).Length;
                bool   isSuccess1 = SDKRealize.GetInitialize().TTSTextPut(sessionId, text, textLen, null);
                if (isSuccess1)
                {
                    uint   audioLen    = 0;  //返回的音频字节长度
                    int    synthStatus = 0;  //返回的合成状态
                    int    eCode1      = -1; //返回的合成音频错误码
                    byte[] bytes       = SDKRealize.GetInitialize().TTSAudioGet(sessionId, ref audioLen, ref synthStatus, ref eCode1);
                    if (eCode1 == 0)
                    {
                        Naudio.GetInstance().PlayAsBytes(bytes);
                    }
                }
            }
            SDKRealize.GetInitialize().TTSSessionEnd(sessionId, null);
        }
Пример #4
0
        /// <summary>
        /// 批量语音合成
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void button3_Click(object sender, EventArgs e)
        {
            string txtFile = this.textBox3.Text;    //文本文件路径

            if (File.Exists(txtFile))
            {
                string ttsDirPath = SDKRealize.GetInitialize().TTSdir + Path.GetFileNameWithoutExtension(txtFile) + "/";
                if (!Directory.Exists(ttsDirPath))
                {
                    Directory.CreateDirectory(ttsDirPath);
                }
                using (StreamReader sr = new StreamReader(txtFile))
                {
                    var tempStr = string.Empty;
                    while (!string.IsNullOrEmpty(tempStr = sr.ReadLine()))
                    {
                        var strArray = tempStr.Split(':');
                        await TTStoFile(strArray[1], ttsDirPath + strArray[0] + ".wav");
                    }
                }
            }
        }