如何从谷歌文本到 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 参数获取性别声音?的主要内容,如果未能解决你的问题,请参考以下文章
试图从谷歌地图获取纬度是通过 Android 中的意图返回 null