浏览器无法加载PHP脚本,但是终端可以加载?

时间:2019-04-08 17:58:52

标签: php google-cloud-platform google-text-to-speech

我正在创建一个智能家庭助理,我尝试使用基本的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,我查看了有关堆栈溢出的其他一些答案,这些答案与我所遇到的问题有关,他们没有解决我的问题,并且并没有涵盖几乎相同的问题。

谢谢, 内森

1 个答案:

答案 0 :(得分:0)

借助@jdp,我得以解决它。我需要链接到包含授权凭证的json文件。现在可以使用了。 :)

$textToSpeechClient = new TextToSpeechClient(['credentials' => 'credentials.json']);