1. 单个音频时长限制10分钟
文档地址
2. 多人配音SSML
每次请求 <voice> 标签只能最大50个,参考 #1
3. SDK 在 linux 环境下 报错:gcc 软件无法加载
4. 语音品质问题
使用 SDK 生成的音频声音很差,默认音频流格式为 WAV(16 KHz 或 8 kHz,16 位,单声道 PCM)
参考
可以使用这个设置提升品质
SpeechConfig config = SpeechConfig.fromSubscription("xxx", "xxx");
config.setSpeechSynthesisVoiceName("zh-CN-YunxiNeural");
config.setSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff48Khz16BitMonoPcm);
这里一定要选Riffxxx开头的 后面会讲到
另外
由于音频限制最大时长10分钟的问题,太多文本的情况下只能
- 控制单次文本长度,分批次文本一个个生成
- 合并音频 (拼接起来)
========== 音 频 拼 接 大 坑 ======
如果SpeechSynthesisOutputFormat选的不是 Riffxxx 开头的 生成的音频可能无法播放,无法解析。
刚开始还以为是别人SDK的问题…还去 Github 各种搜,百度各种搜,谷歌各种搜…,最后放弃了,后面又想起来 绝对是SpeechSynthesisOutputFormat 的问题,挨个试终于确认了是这个引起。
但不知什么原因…
换了好多个JAVA的语言类库去解析音频也无法解析
就连 ffmpeg 也没法处理
AudioSystem.getAudioInputStream(audioFile); 也无法解析,报错:javax.sound.sampled.UnsupportedAudioFileException: File of unsupported format
AudioFileIO.read(audioFile); 也无法解析,报错:Exception in thread “main” org.jaudiotagger.audio.exceptions.CannotReadException: outputaudio.wav Wav RIFF Header not valid
特此记录