сначала сделайте запрос HTTP GET для https://textreader.surge.sh/, затем выполните запрос HTTP OPTIONS для https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts
с пустым телом и заголовками http Access-Control-Request-Method: POST
и Access-Control-Request-Headers: content-type
и Origin: https://textreader.surge.sh
и убедитесь, чтоответ в буквальном смысле ok
(), затем выполните HTTP-запрос POST к https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts
с заголовками Referer: https://textreader.surge.sh/
и Content-Type: application/json;charset=utf-8
и Origin: https://textreader.surge.sh
, и тело POST содержит данные "text":"<the text you wish spoken here>","voice":"Brian"}
закодированный в JSON, ответ выглядит так:
{
"success": true,
"speak_url": "https://polly.streamlabs.com/v1/speech?OutputFormat=ogg_vorbis&Text=penis&VoiceId=Brian&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIHKNQTJ7BGLEFVZA/20190218/us-west-2/polly/aws4_request&X-Amz-Date=20190218T112454Z&X-Amz-SignedHeaders=host&X-Amz-Expires=900&X-Amz-Signature=07652663d5024414ae4b4087fa39f9eaa8b912cc04dc7a5d7abecdaed5585396"
}
теперь просто отправьте HTTP-запрос GET на «URL-адрес динамика» с заголовками HTTP Referer: https://textreader.surge.sh/
и Origin: https://textreader.surge.sh
, и вот, ответ:Ваше аудио в формате ogg / vorbis (которое в основном похоже на непатентованную версию MP3 без патентов и роялти)
- Удивительно, но этот веб-сайт вообще не использует куки.
с PHP / hhb_curl это будет выглядеть
<?php
declare (strict_types = 1);
require_once('hhb_.inc.php');
$hc = new hhb_curl('', true);
$hc->exec('https://textreader.surge.sh');
$response = $hc->setopt_array(array(
CURLOPT_CUSTOMREQUEST => 'OPTIONS',
CURLOPT_HTTPHEADER => array(
'Access-Control-Request-Method: POST',
'Access-Control-Request-Headers: content-type',
),
CURLOPT_URL => 'https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts',
))->exec()->getStdOut();
if (trim($response) !== "ok") {
throw new \LogicException("unexpected response from https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts: {$response}");
}
$json = $hc->setopt_array(array(
CURLOPT_URL => 'https://us-central1-sunlit-context-217400.cloudfunctions.net/streamlabs-tts',
CURLOPT_CUSTOMREQUEST => null,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => json_encode(array(
'text' => 'the text you wish spoken here',
'voice' => 'Brian'
)),
CURLOPT_HTTPHEADER => array(
'Referer: https://textreader.surge.sh/',
'Content-Type: application/json;charset=utf-8',
'Origin: https://textreader.surge.sh'
)
))->exec()->getStdOut();
//var_dump($json);
$data = json_decode($json, true);
$ogg_vorbis_location = $data['speak_url'];
$ogg_vorbis_binary = $hc->setopt(CURLOPT_HTTPGET, 1)->exec($ogg_vorbis_location)->getStdOut();
file_put_contents("voice.ogg",$ogg_vorbis_binary);
echo "audio saved to voice.ogg.\n";