如何从谷歌文本到 PHP 中的语音 API 中的 URL 参数获取性别声音?

Posted

技术标签:

【中文标题】如何从谷歌文本到 PHP 中的语音 API 中的 URL 参数获取性别声音?【英文标题】:How to get gender voice from URL parameter in google text to speech API in PHP? 【发布时间】:2019-10-13 12:51:27 【问题描述】:

我已经使用谷歌云在 php 中构建了文本到语音 api。我可以通过 URL 参数传递其他参数,例如音调、语速、文本,但我只想知道如何为性别声音做同样的事情?

我尝试将它作为字符串传递或传递整个参数,但这些都不起作用。

$synthesisInputText = (new SynthesisInput())->setText($_GET['text']);

            $voice = (new VoiceSelectionParams())
                ->setLanguageCode($_GET['lang']))
                // ->setName('en-IN-Wavenet-A')
                ->setSsmlGender(SsmlVoiceGender::FEMALE);

            $audioConfig = (new AudioConfig())
                ->setAudioEncoding(AudioEncoding::MP3)
                ->setPitch($_GET['pitch'])
                ->setSpeakingRate($_GET['speking_rate']);

            $response = $this->client->synthesizeSpeech($synthesisInputText, $voice, $audioConfig);

            $audioContent = $response->getAudioContent();

            file_put_contents($this->file,$audioContent);

我能够正确获取所有其他参数,但我也想从 URL 参数中获取 setSsmlGender(SsmlVoiceGender::$_GET['voice'])。有什么帮助会很棒吗?

【问题讨论】:

可能传入您用作表达式的编码。例如 MALE -> SsmlVoiceGender::MALE 和 FEMALE -> SsmlVoiceGender::FEMALE。遗憾的是,我不会说 PHP,但我认为可以编写表达式来实现这一点。 【参考方案1】:

使用SsmlVoiceGender::value() 方法将您的输入转换为正确的枚举值:

use Google\Cloud\TextToSpeech\V1\SsmlVoiceGender;

$genderInput = $_GET['voice'];
try 
    $gender = SsmlVoiceGender::value($genderInput);
 catch (\UnexpectedValueException $e) 
    // Invalid input. Hardcode a value?
    $gender = SsmlVoiceGender::MALE;


$voice->setSsmlGender($gender);

确保您使用的是google/cloud-voice-text-to-speech v0.4.0 或更高版本。如果您使用的是google/cloud,请务必使用v0.98.0 或更高版本。

【讨论】:

以上是关于如何从谷歌文本到 PHP 中的语音 API 中的 URL 参数获取性别声音?的主要内容,如果未能解决你的问题,请参考以下文章

C# 中的 Google 语音转文本 API

如何从谷歌地图v2 android中的标记获取屏幕坐标

试图从谷歌地图获取纬度是通过 Android 中的意图返回 null

如何使用 ionic 中的 java 脚本从谷歌地图中的地址获取经度和纬度

如何从谷歌地图 api android 中删除多余的折线

如何从谷歌表格中的另一个单元格引用公式