SpeechKit Cloud

что бы не потерялись заметки

Модераторы: Emilio, admin, alex

alex
Сообщения: 38
Зарегистрирован: 18 апр 2016, 11:43

SpeechKit Cloud

Сообщение alex » 20 апр 2016, 09:37

Код: Выделить всё

#!/usr/bin/php
-- генерация голоса из текста. Яндекс сильно удивил  качеством.
<?php

require('/var/lib/asterisk/agi-bin/phpagi/phpagi.php');
$agi = new AGI();

$filename = $_SERVER["argv"][1];

$text=urlencode("Вы позвонили в компанию Рога-Копыта.  Оставайтесь на линии. Вам ответит первый освободившийся оператор.");

$format="wav";
$lang="ru-RU";
$key="my-key-get-from-yandex";

#$speaker="zahar";
$speaker="ermil";
#$speaker="jane";
#$speaker="omazh";


$emotion="good";
#$emotion="neutral";
#$emotion="evil";
#$emotion="mixed";

$robot="false";
#$robot="true";

$url="https://tts.voicetech.yandex.net/generate?text=$text&format=$format&lang=$lang&speaker=$speaker&emotion=$emotion&key=$key&robot=$robot";

file_put_contents("/tmp/$filename.wav", file_get_contents("$url"));
exec("/usr/bin/sox  /tmp/$filename.wav -A -t RAW -r 8000 -c 1 $filename.alaw");
unlink("/tmp/$filename.wav");

$agi->exec("playback","/tmp/$filename");
unlink("/tmp/$filename.alaw");

?>


---- распознование

Код: Выделить всё

#!/usr/bin/php

<?php

require('/var/lib/asterisk/agi-bin/phpagi/phpagi.php');
$agi = new AGI();
$filename = $_SERVER["argv"][1];
#$filename = '12345';
$fp = fopen('/tmp/counter.txt', 'w+');

# тут один хитрый маневр сделал, яндекс просит 32-значное 16-ричное число, а hash md5 нам именно такое число и дает, и вот что б не мучится не генерить, просто берем уникальный идентификатор звонка и хэшируем его черем мд5
$uuid=md5($filename);
$topic="queries";
$lang="ru-RU";
$key="my-key-get-from-yandex";

$agi->record_file("/tmp/$filename","wav","#","10000","4");

$agi->NoOp();

#$agi->exec("playback","/tmp/$filename");

exec("/usr/bin/sox  /tmp/$filename.wav -r 16000 -b 16 -c 1 /tmp/$filename-pcm.wav");
$cmd = exec("curl --silent -F \"Content-Type=audio/x-pcm;bit=16;rate=16000\" -F \"audio=@/tmp/$filename-pcm.wav\" \"asr.yandex.net/asr_xml?key=$key&uuid=$uuid&topic=$topic&lang=$lang\"", $xml);


$test = fwrite($fp, "curl --silent -F \"Content-Type=audio/x-pcm;bit=16;rate=16000\" -F \"audio=@/tmp/$filename-pcm.wav\" asr.yandex.net/asr_xml?key=$key&uuid=$uuid&topic=$topic&lang=$lang");


$res_xml = implode($xml);

if (preg_match('!<variant .*?>(.*)</variant>!si', $res_xml, $arr)) $voice_text = $arr[1];
else $voice_text='';



echo 'SET VARIABLE TEXT "'.$voice_text.'"'."\n";
fgets(STDIN);
echo 'VERBOSE ("'.$voice_text.'")'."\n";
fgets(STDIN);


fclose($fp);
exit(0);

#unlink("/tmp/$filename.wav");

?>


скрипты сырые, но рабочие, на их базе можно много что интересного сделать.

Вернуться в «Заметки администратора»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя