我正在创建一个智能家庭助理,我尝试使用基本的Chrome TTS和其他API,然后使用Google Cloud Platform Text To Speech WaveNet东西。我使用一个PHP代码示例来将音频放入文件夹中的文件中(称为剪辑)。
当我尝试在浏览器中运行PHP文件时,它不起作用,但是在Mac OS终端中使用php命令运行它确实起作用,并且成功创建了文件,没有错误。
我曾尝试使用Node.js,但由于我需要从HTML页面运行文件并且不想公开我的Google Cloud Platform API凭据,因此无法正常工作。
<?php
header("Content-Type: application/json");
if(!isset($_GET['text'])) {
json_encode(array(
"success" => "false",
"error" => "missingPhrase"
));
}
require 'vendor/autoload.php';
use Google\Cloud\TextToSpeech\V1\AudioConfig;
use Google\Cloud\TextToSpeech\V1\AudioEncoding;
use Google\Cloud\TextToSpeech\V1\SynthesisInput;
use Google\Cloud\TextToSpeech\V1\TextToSpeechClient;
use Google\Cloud\TextToSpeech\V1\VoiceSelectionParams;
$textToSpeechClient = new TextToSpeechClient();
$input = new SynthesisInput();
$input->setText($_GET['text']);
$voice = new VoiceSelectionParams();
$voice->setLanguageCode('en-US-Wavenet-D');
$audioConfig = new AudioConfig();
$audioConfig->setAudioEncoding(AudioEncoding::LINEAR16);
$number = 0;
$fi = new FilesystemIterator("clips", FilesystemIterator::SKIP_DOTS);
foreach ($fi as $f) {
$number = $number + 1;
}
$number = $number + 1;
$resp = $textToSpeechClient->synthesizeSpeech($input, $voice, $audioConfig);
file_put_contents("clips/" . $number . '.mp3', $resp->getAudioContent());
echo json_encode(array(
"file_name" => 'clips/' . $number . ".mp3"
));
?>
以上代码的结果将导致默认镶边“此页面无法正常工作”。
PS,我查看了有关堆栈溢出的其他一些答案,这些答案与我所遇到的问题有关,他们没有解决我的问题,并且并没有涵盖几乎相同的问题。
谢谢, 内森
答案 0 :(得分:0)
借助@jdp,我得以解决它。我需要链接到包含授权凭证的json文件。现在可以使用了。 :)
$textToSpeechClient = new TextToSpeechClient(['credentials' => 'credentials.json']);