Страница 4 из 6

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 2:41 pm
alekszander
OlegM писал(а):
skysilver писал(а):
OlegM писал(а):В тот-же файл tts.class.php с google_tts и yandex_tts добавил небольшую функцию в виде костыля
Нет больше файла /lib/tts.class.php в составе дистрибутива ядра. Этот момент я имел в виду выше.
У меня она осталась. Поэтому об этом и пишу. :D Модуль Yandex TTS не дает возможности произносить речь без текста в терминале. А в демонстрационном варианте текст в терминале не нужен.
В общем создал файл tts.class.php все страницы пополз весь дизайн. Все таки вопрос с подключением модуля YandexTTS в сценарии DemoSay остался открытым.

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 2:45 pm
OlegM
alekszander писал(а):В общем создал файл tts.class.php все страницы пополз весь дизайн. Все таки вопрос с подключением модуля YandexTTS в сценарии DemoSay остался открытым.
А где Вы его создали? Тем более этот файл никак не влияет на дизайн.
Этот файл нужно создать в /var/www/lib

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 2:53 pm
alekszander
OlegM писал(а):
alekszander писал(а):В общем создал файл tts.class.php все страницы пополз весь дизайн. Все таки вопрос с подключением модуля YandexTTS в сценарии DemoSay остался открытым.
А где Вы его создали? Тем более этот файл никак не влияет на дизайн.
Этот файл нужно создать в /var/www/lib
Именно там он и создан. Ниже скрин с тем что случилось.
SPOILERSPOILER_SHOW
52A6F22E-C0F9-4CF6-8E6D-B00C38429517.jpeg

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 2:56 pm
skysilver
alekszander писал(а):Именно там он и создан. Ниже скрин с тем что случилось
Можно содержимое файла увидеть? Предчувствие у меня плохое на этот счет. ))

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 2:57 pm
OlegM
skysilver писал(а):
alekszander писал(а):Именно там он и создан. Ниже скрин с тем что случилось
Можно содержимое файла увидеть? Предчувствие у меня плохое на этот счет. ))

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

<?php
function YandexTranslate($message, $lang = 'en-ru')
{
 $yt_api_key = "Здесь сам ключ"; // Получить тут: https://tech.yandex.ru/keys/get/?service=trnsl
 $message = urlencode($message);
 
 $yt_link = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=".$yt_api_key."&text=".$message."&lang=".$lang;

 $result = file_get_contents($yt_link);
 $result = json_decode($result, true);
 $en_test = $result['text'][0];

 return $en_test;
}
?>
На файл нужно поставить разрешение на выполнение (744) и Группа с Владельцем от имени apache.

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 2:58 pm
alekszander
КодSPOILER_SHOW

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

/**
 * YandexTTS
 * @param mixed $message Message
 * @param mixed $lang    Language (default 'ru-RU')
 * @return int|string
 */
function YandexTTS($message, $lang = 'ru-RU')
{
   $filename       = md5($message) . '_ya.mp3';
   $cachedVoiceDir = ROOT . 'cached/voice';
   $cachedFileName = $cachedVoiceDir . '/' . $filename;
   $base_url       = 'https://tts.voicetech.yandex.net/generate?';

   if (file_exists($cachedFileName))
   {
      @touch($cachedFileName);

      return $cachedFileName;
   }
   
   $qs = http_build_query(array('format' => 'mp3', 'lang' => $lang, 'speaker' => 'omazh', 'key' => SETTINGS_YANDEX_TTS_KEY, 'text' => $message));

   try
   {
      $contents = file_get_contents($base_url . $qs);
   }
   catch (Exception $e)
   {
      registerError('yandextts', get_class($e) . ', ' . $e->getMessage());
   }
   
   if (isset($contents))
   {
      CreateDir($cachedVoiceDir);

      SaveFile($cachedFileName, $contents);

      return $cachedFileName;
   }
   
   return 0;
}  
Видимо надо отдыхать после рабочего дня. Что именно должно быть в файле?

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 3:01 pm
skysilver
alekszander писал(а):Видимо надо отдыхать после рабочего дня. Что именно должно быть в файле?
Ок. А <?php в самом начале есть?

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 3:02 pm
OlegM
Я вам не то дал

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

<?php
function YandexTTS($message, $lang = 'ru-RU')
{
   $filename       = md5($message) . '_ya.mp3';
   $cachedVoiceDir = ROOT . 'cached/voice';
   $cachedFileName = $cachedVoiceDir . '/' . $filename;
   $base_url       = 'https://tts.voicetech.yandex.net/generate?';

   if (file_exists($cachedFileName))
   {
      @touch($cachedFileName);

      return $cachedFileName;
   }
   
   $qs = http_build_query(array('format' => 'mp3', 'lang' => $lang, 'speaker' => 'omazh', 'key' => SETTINGS_YANDEX_TTS_KEY, 'text' => $message));

   try
   {
      $contents = file_get_contents($base_url . $qs);
   }
   catch (Exception $e)
   {
      registerError('yandextts', get_class($e) . ', ' . $e->getMessage());
   }
   
   if (isset($contents))
   {
      CreateDir($cachedVoiceDir);

      SaveFile($cachedFileName, $contents);

      return $cachedFileName;
   }
   
   return 0;
}
?>
Обязательно в начале и конце
<?php

?>

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 3:12 pm
alekszander
skysilver писал(а):
alekszander писал(а):Видимо надо отдыхать после рабочего дня. Что именно должно быть в файле?
Ок. А <?php в самом начале есть?
Да прописано, все нормально. Но ошибка так и не исчесзла
ошибкаSPOILER_SHOW

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

Cannot find HOME directory. MPlayer2 2.0-728-g2c378c7-4+b1 (C) 2000-2012 MPlayer Team Terminal type `unknown' is not defined. Playing /var/www/cached/voice/d41d8cd98f00b204e9800998ecf8427e_ya.mp3. Failed to recognize file format. Exiting... (End of file) Cannot find HOME directory. MPlayer2 2.0-728-g2c378c7-4+b1 (C) 2000-2012 MPlayer Team Terminal type `unknown' is not defined. Playing /var/www/cached/voice/d41d8cd98f00b204e9800998ecf8427e_ya.mp3. Failed to recognize file format. Exiting... (End of file)
Очень сильно беспокоит эта ошибка

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

Terminal type `unknown' is not defined. Playing /var/www/cached/voice/d41d8cd98f00b204e9800998ecf8427e_ya.mp3. Failed to recognize file format. Exiting... (End of file)
Причем если бы ключ не проходил бы, то файл бы не смог сгенерироваться. И в чем проблема не пойму. Может расковырять файл модуля и посмотреть как там файл формируется?

Сменил

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

system('/usr/bin/mplayer '.$yandex_file);  
на

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

playSound($yandex_file, 1); 

Ошибка исчезла, но в динамиках тишина, файл появляется.

Re: Демонстрация возможностей системы

Добавлено: Чт ноя 16, 2017 3:35 pm
skysilver
alekszander писал(а):Ошибка исчезла, но в динамиках тишина, файл появляется.
Какого размера файл? Попробуй его проиграть через плеер на компе или телефоне. Думаю, что он просто пустой.