Я создаю умный домашний помощник, пробовал использовать базовый Chrome TTS, другие API-интерфейсы, а затем попал на Google Cloud Platform Text To Speech WaveNet. Я использовал пример кода PHP, чтобы поместить аудио в файл в папке (с именем clips.)
Когда я пытаюсь запустить файл PHP в браузере, он не работает, но запуск его с помощью команды php в терминале Mac OS работает и успешно создает файл без ошибок.
Я пытался использовать Node.js, но он не работал, потому что мне нужно было запустить файл со страницы HTML, и я не хотел показывать свои учетные данные API Google Cloud Platform.
<?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"
));
?>
В результате выполнения кода, приведенного выше, в Chrome по умолчанию отображается надпись «Эта страница не работает».
PS, я посмотрел на некоторые другие ответы о переполнении стека, связанные с моей проблемой, и они НЕ решили мою проблему и не охватывали почти ту же проблему.
Спасибо,
Nathan