php 文本到语音:不考虑间距值

vulvrdjw  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(112)

我在php中调用谷歌文本到语音的其余API。
我这样打电话:

$url = "https://texttospeech.googleapis.com/v1/text:synthesize?key=".$key;

    $data = array(
                    'input' => array(
                        'ssml' => $testo
                    ),
                    'voice' => array(
                        "languageCode" => "en-us",
                        "name" => "en-US-Wavenet-I",
                        "ssmlGender" => "MALE"
                    ),
                    'audioConfig' => array(
                        'audioEncoding' => "LINEAR16",
                        "effectsProfileId" =>  [
                          "small-bluetooth-speaker-class-device"
                        ],
                        "speakingRate" => 1,
                        "pitch" => 4,
                     )
              );

    $options = array(
        'http' => array(
                    'header' => "Content-Type: application/json\r\n",
                    'method' => 'POST',
                    'content' => json_encode($data)
                )
            );

            $context = stream_context_create($options);
            $response = file_get_contents($url, false, $context);
          
            if ($response === false) {
                
            } else {
            
                $response_data = json_decode($response, true);
                ......
            }

响应似乎忽略了音高值。我已经尝试将它作为整数和字符串传递,但结果没有改变。我做错了什么?
谢谢

tkclm6bt

tkclm6bt1#

如果有人有同样的问题,我找到了一个可能的解决方案:
$testo = '<speak> text I need audio </speak>';
我添加了一个内部韵律标签来说话:

$testo = '<speak><prosody pitch="'.$pitchValue.'st"> text I need audio </prosody ></speak>';

我得到了想要的结果。

f3temu5u

f3temu5u2#

如果你使用谷歌SSML的球场。您可以使用x-low/low/medium/high/x-high中的值。这个例子是有效的

<speak>
<voice  name="en-US-Wavenet-E">
<prosody  pitch="high">
Hello world
</prosody>
</voice>

相关问题