1. 单个音频时长限制10分钟
2. 多人配音SSML
每次请求 <voice> 标签只能最大50个,参考 #1
3. SDK 在 linux 环境下 报错:gcc 软件无法加载
必须认真阅读这个 平台要求 !!!
必须是JDK而不是JRE
2023-11-13 09:55:10.538 ERROR [p-nio-80-exec-5] c.c.c.c.book.BookToMp3Controller : 183 : 语音合成失败: Canceled
2023-11-13 09:55:10.541 ERROR [p-nio-80-exec-5] c.c.c.c.book.BookToMp3Controller : 185 : CANCELED: Reason=Error
2023-11-13 09:55:10.541 ERROR [p-nio-80-exec-5] c.c.c.c.book.BookToMp3Controller : 188 : CANCELED: ErrorCode=ConnectionFailure
2023-11-13 09:55:10.541 ERROR [p-nio-80-exec-5] c.c.c.c.book.BookToMp3Controller : 189 : CANCELED: ErrorDetails=Connection failed (no connection to the remote host). Internal error: 1. Error details: Failed with error: WS_OPEN_ERROR_UNDERLYING_IO_OPEN_FAILED
wss://southeastasia.tts.speech.microsoft.com/cognitiveservices/websocket/v1
X-ConnectionId: 5d2a22355fde40ca89306316382bb15f USP state: Sending. Received audio size: 0 bytes.
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
特此记录