调用Google Text-to-Speech API时pitch参数不生效问题排查
Google Text-to-Speech API忽略pitch参数的排查与解决
你的代码里pitch参数不生效,主要从这两个方向排查:
1. SSML输入的局部设置会覆盖全局pitch
你用input.ssml传入文本,如果$testo里包含了<prosody>标签设置音调,那audioConfig里的全局pitch会直接被忽略。比如你的SSML内容如果是:
<speak> <prosody pitch="0">固定音调的文本</prosody> </speak>
不管全局设多少pitch,最终都会用SSML里的0值。先检查你的$testo,把里面硬编码的prosody音调设置去掉。
2. 确保pitch参数的格式符合要求
Google TTS的pitch要求是**-20.0到20.0之间的浮点数**,虽然你传的4在范围内,但建议明确传浮点数类型,把"pitch" => 4改成"pitch" => 4.0,避免JSON解析时出现隐性问题。
额外验证步骤
- 打印生成的请求JSON,确认pitch参数是否正确发送:
echo json_encode($data);
如果输出里pitch是4.0,说明参数构造没问题,继续排查SSML。
- 你用的
en-US-Wavenet-I模型支持音调调整,这点没问题,不用换模型。
调整后的audioConfig代码示例:
'audioConfig' => array( 'audioEncoding' => "LINEAR16", "effectsProfileId" => [ "small-bluetooth-speaker-class-device" ], "speakingRate" => 1.0, "pitch" => 4.0, )
优先排查SSML内容,这是最常见的全局pitch失效原因。
内容的提问来源于stack exchange,提问作者elle D
相关产品推荐
相关产品推荐

