Yandex SppechKit TTS Сохранение файла

440
18 января 2017, 02:49

Здравствуйте, пытаюсь написать простенький скрипт на php который должен:

  1. Загрузить из файла некоторый текст из которого нужно синтезировать голосовое сообщение
  2. Сделать запрос к Yandex SpeechKit Cloud API TTS
  3. Сохранить результат в отдельный wav файл

Собственно скрипт есть и он даже как-то работает:

<?php 
      $str = file_get_contents("inputfile.txt");//файл с текстом
      $qs = http_build_query(array("format" => "wav","lang" => "ru-RU","speaker" => "jane","key" => "APIKEY","emotion" => "good", "text" => $str)); // параметры запроса
      $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n"))); 
      $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); //выполнение запроса
      $file = fopen("testfile.wav", "w"); //файл для хранения
      fwrite($file, $soundfile); //запись в файл
      fclose($file);
     ?>

Но в файл записывается только первые неколько десятков байт от WAV что-то вроде:

RIFF$   WAVEfmt      Ђ»   w   data    

Как записать в файл все целиком? Спасибо.

Answer 1

Проблема решилась путем конвертации входного текста в UTF8. Полностью рабочий код:

<?php 
 $str = file_get_contents("inputfile.txt");
 $str = utf8_encode($str);
 $qs = http_build_query(array("format" => "wav","lang" => "ru-RU","speaker" => "jane","key" => "APIKEY","emotion" => "good", "text" => $str)); // параметры запроса
 $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n")));
 $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); 
 $file = fopen("testfile1.wav", "w");
 fwrite($file, $soundfile);
 fclose($file);
?>

Всем большое спасибо.

READ ALSO
Выдаёт ошибку в коде

Выдаёт ошибку в коде

Здравствуйте! есть код, который должен получать информацию с twitch канала

227
Удаление шаблонных данных из строки php

Удаление шаблонных данных из строки php

Есть переменная, содержащая HTML вёрсткуИз нее нужно удалить все блоки вида

222
как парсить doc и docx на php

как парсить doc и docx на php

Привет, подскажите, пожалуйста как парсить документы типа doc и docx без использования библиотек на php?

275
Проблема с редактированием модуля в Joomla

Проблема с редактированием модуля в Joomla

Собственно видео - https://wwwyoutube

222