В настоящее время я использую Watson для преобразования текста в речь IBM с использованием PHP. Это работает хорошо, но я обнаружил, что продолжительность звука составляет 27 часов (в то время как Уотсон говорит только несколько секунд).
Когда я открыл .wav, я обнаружил, что он автоматически останавливается, когда голос останавливается (таким образом, через несколько секунд). После этого я предполагаю, что аудиофайл должен иметь скрытую характеристику, что-то вроде «время окончания».
Я пропустил некоторые параметры, чтобы указать максимальную длительность звука при вызове API? Или я мог бы перезаписать время окончания на «время окончания» в php или, по крайней мере, быть способным получить это «время окончания».
$username = '****************';
$password = '****************';
$headers = array( 'Content-Type: application/json',
'Accept: audio/wav');
$data_json = json_decode($input['text'], true);
$postdata = array(
'accept' => 'audio/wav',
'text' => $data_json['text']
);
$data_json = json_encode($postdata);
$curlPost = curl_init();
curl_setopt($curlPost, CURLOPT_POST, 1);
curl_setopt($curlPost, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlPost, CURLOPT_URL, "https://stream.watsonplatform.net/text-to-speech/api/v1/synthesize?voice=".$language);
curl_setopt($curlPost, CURLOPT_USERPWD, $username.':'.$password);
curl_setopt($curlPost, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlPost, CURLOPT_POSTFIELDS, $data_json);
$response = curl_exec($curlPost);
curl_close($curlPost);
$filePathName = './storage/' . uniqid() . '-Speaking.wav';
if(!file_put_contents($filePathName, $response)){
return response()->json(array(
'code' => '300',
'msg' => 'Error creating file'
));
}
Зачем мне это нужно? Потому что мой коллега должен прочитать аудиофайл на C ++.
Задача ещё не решена.
Других решений пока нет …