帖子

语音合成到本地,没有看到pcm文件

[复制链接]

该用户从未签到

7701  楼主| yangxu@inbot.cn 发表于 2016-1-27 15:51:26 1#
本帖最后由 yangxu@inbot.cn 于 2016-1-28 14:59 编辑
  1. <span style="line-height: 1.5;">String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/tts.pcm";</span>
复制代码
三星的pad,没有SD卡,获得的path路径是:\storage\emulated\0

这个path本身是没有的,我手动建好了相应文件夹,之后运行程序,其中
ret=0
onCompleted回调也无错误。
但path下一直没有 tts.pcm文件

要怎么才能正常合成到本地?

--------------------------------------------------------------------------------------------------------------
讯飞demo和文档比较乱啊,小功能都耗了我不少时间,给有同样遭遇的朋友一个指引。


官方回应目前tts支持保存pcm和wav两种格式。


设置方法为:
  1. mTts.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");
  2. mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory()+"/msc/tts.wav");
复制代码
但如果还是调用
  1. startSpeaking(java.lang.String text, SynthesizerListener listener)
复制代码
还是不会保存到本地。(我理解应该是实时播放合成,并且保存到本地目录才对,但过了一段时间也没发现/msc下有tts.wav)


需要调用这个合成:
  1. synthesizeToUri(java.lang.String text, java.lang.String uri, SynthesizerListener listener)
复制代码
这样就让人困惑,既然setParam设置了保存路径,但这里还要设置一次路径,而且这里的path路跟setParam的不同,居然这两个地方都没有wav文件,最终保存的是在三星pad的根目录下。诡异。
好混乱。
希望讯飞再整整。

至此,合成语音到本地文件功能总算实现,累觉不爱。

王水 发表于 2016-2-5 10:51:04
2#
synthesizeToUri(java.lang.String text, java.lang.String uri, SynthesizerListener listener)无声合成时,只会在uri目录保存音频,此时mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH,Environment.getExternalStorageDirectory()+"/msc/tts.wav");的设置是无效的,这个设置只在startSpeaking(java.lang.String text, SynthesizerListener listener)时生效。
使用道具 举报 回复