帖子

Unity文字转语音 音频状态一直为未取完

[复制链接]

该用户从未签到

36162 709592744@qq.co 发表于 2018-8-8 16:20:42 1#
Unity文字转语音  音频状态一直为未取完

  public void Speak(string speekText, string szParams, string outWaveFlie)
        {
            byte[] bytes = null;
            int ret = 0;
            try
            {
                sessionID = Marshal.PtrToStringAuto(MSPAPI.QTTSSessionBegin(szParams, ref ret));
                if (ret != 0)
                {
                    if (ttsSpeakErrorEvent != null) ttsSpeakErrorEvent.Invoke("初始化TTS引会话错误,错误代码:" + ret);
                    return;
                }
                ret = MSPAPI.QTTSTextPut(sessionID, speekText, (uint)Encoding.Unicode.GetByteCount(speekText), string.Empty);
                if (ret != 0)
                {
                    if (ttsSpeakErrorEvent != null) ttsSpeakErrorEvent.Invoke("向服务器发送数据,错误代码:" + ret);
                    return;
                }
                IntPtr audio_data;
                int audio_len = 0;
                SynthStatus synth_status = SynthStatus.MSP_TTS_FLAG_STILL_HAVE_DATA;
                using (MemoryStream ms = new MemoryStream())
                {
                    ms.Write(new byte[44], 0, 44);
                    //写44字节的空文件头
                    while (synth_status == SynthStatus.MSP_TTS_FLAG_STILL_HAVE_DATA)
                    {
                        audio_data = MSPAPI.QTTSAudioGet(sessionID, ref audio_len, ref synth_status, ref ret);
                        if (audio_data != IntPtr.Zero)
                        {
                            byte[] data = new byte[audio_len];
                            Marshal.Copy(audio_data, data, 0, audio_len);
                            ms.Write(data, 0, data.Length);
                            if (synth_status == SynthStatus.MSP_TTS_FLAG_DATA_END || ret != 0)
                            {
                                if (ret != 0)
                                {
                                    if (ttsSpeakErrorEvent != null) ttsSpeakErrorEvent.Invoke("下载TTS文件错误,错误代码:" + ret);
                                    return;
                                }
                                break;
                            }
                        }
                        Thread.Sleep(150);
                        UnityEngine.Debug.Log("测试失败");

                    }
                    UnityEngine.Debug.LogWarning("测试成功");
                    System.Diagnostics.Debug.WriteLine("wav header");
                    WAVE_Header header = getWave_Header((int)ms.Length - 44);     //创建wav文件头
                    byte[] headerByte = StructToBytes(header);                         //把文件头结构转化为字节数组                      //写入文件头
                    ms.Position = 0;                                                        //定位到文件头
                    ms.Write(headerByte, 0, headerByte.Length);                             //写入文件头
                    bytes = ms.ToArray();
                    ms.Close();
                }

                if (outWaveFlie != null)
                {
                    if (File.Exists(outWaveFlie))
                    {
                        File.Delete(outWaveFlie);
                    }
                    File.WriteAllBytes(outWaveFlie, bytes);
                }
            }
            catch (Exception ex)
            {
                if (ttsSpeakErrorEvent != null) ttsSpeakErrorEvent.Invoke("Error:" + ex.Message);
                return;
            }
            finally
            {
                ret = MSPAPI.QTTSSessionEnd(sessionID, "");
                if (ret != 0)
                {
                    if (ttsSpeakErrorEvent != null) ttsSpeakErrorEvent.Invoke("结束TTS会话错误,错误代码:" + ret);
                }
                else
                {
                    if (tts_SpeakFinishedEvent != null) tts_SpeakFinishedEvent.Invoke(speekText, bytes);
                }
            }
        }

QQ截图20180808161836.png
百花 发表于 2018-8-8 16:28:20
2#
Dear:
  感谢您致信和支持讯飞开放平台!
您好,目前官网暂无unity的示例,抱歉~
祝您工作愉快~

  新手指南ppt教程&各平台文档链接&在线服务免费提额位置:http://bbs.xfyun.cn/forum.php?mo ... id=36513&extra=
  错误码链接:https://shimo.im/sheet/w3yUy39uNKs0J7DT/undefined
  离线服务(离线命令词、离线合成、唤醒),体验期均为35天,装机量3台,体验期结束后,点击控制台---我的应用---立即购买按钮
  在线服务(听写、合成):免费500次/天---免费提额通过后2w次/天---超过2w/天---联系商务msp_business@iflytek.com
  在线服务(人脸、声纹、评测):免费500次/天---超过500次/天---联系商务msp_business@iflytek.com

楼内回复

我用另外一个AppID都可以,但是这个ID就不行了,是不是我ID的原因???  详情 发表于 2018-8-8 16:34
使用道具 举报 回复
 楼主| 709592744@qq.co 发表于 2018-8-8 16:34:19
3#
百花 发表于 2018-8-8 16:28
Dear:
  感谢您致信和支持讯飞开放平台!
您好,目前官网暂无unity的示例,抱歉~

我用另外一个AppID都可以,但是这个ID就不行了,是不是我ID的原因???
使用道具 举报 回复