Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 26 из 26

Тема: Звуковое оповещение/сообщение

  1. #21
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,840

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Dies ist fantastisch !
    Неправильно, правильно будет "Das ist fantastisch".
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #22
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    По началу, когда читал статью о распознавании и синтеза голоса не придал этому значения. И тут я какой-то фильм фантастический смотрю, где ИИ корабля объявляет "Через 30 секунд произойдет ..... и т.д.". И тут меня осенило! А почему я не использую голосовой интерфейс для управления? Еще жена подлила масла.... Решила в ванную сходить в 2 часа ночи (как детишек уложила спать), а тут дом перешел в дежурный режим и после 100 литров расхода воды назвал это событие "Подозрительным расходом воды" и перекрыл подачу воды в дом После этого я много узнал о себе нового
    Объяснять ей, что надо было кнопку нажать или на телефоне кнопку жмакнуть - не смог. Вот и подумал.... ну пусть побеседуют и придут к компромиссному варианту

  3. #23
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,840

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    По началу, когда читал статью о распознавании и синтеза голоса не придал этому значения. И тут я какой-то фильм фантастический смотрю, где ИИ корабля объявляет "Через 30 секунд произойдет ..... и т.д.". И тут меня осенило! А почему я не использую голосовой интерфейс для управления? Еще жена подлила масла.... Решила в ванную сходить в 2 часа ночи (как детишек уложила спать), а тут дом перешел в дежурный режим и после 100 литров расхода воды назвал это событие "Подозрительным расходом воды" и перекрыл подачу воды в дом После этого я много узнал о себе нового
    Объяснять ей, что надо было кнопку нажать или на телефоне кнопку жмакнуть - не смог. Вот и подумал.... ну пусть побеседуют и придут к компромиссному варианту
    Последний раз редактировалось petera; 19.11.2014 в 13:44.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #24
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Получаю данные с контроллера по modbus tcp на openhab. Openhab по ssh выполняет на удаленном оповещаетеле (RPi) скрипт синтеза речи на основе сервиса гугла.
    Два эксперимента.



  5. #25
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Прошло больше года как начал использовать синтезированную речь.
    Сообщений не много. Одна группа сообщений связана с безопасностью. Вторая с авариями в инженерных сетях дома.
    От синтезатора гугла отказался и перешел на яндекс.
    Синтез происходит следующим образом:
    При появлении события, которое необходимо озвучить ПЛК передает информацию на OpenHAB (по modbus TCP).
    OH в свою очередь формирует текстовую строку в зависимости от кода события и вызывает php скрипт.
    php формирует запрос к Яндексу на синтез. Полученный синтезированный речевой файл передает на asterisk, который воспроизводит его используя функцию интеркома на групповой номер. В группу номеров подключены все имеющиеся телефоны.
    Код:
    <!--?php
    
    
    
    
    ###################################################
    # Ubuntu 16.04/ PHP7
    #
    # Скрипт получает на входе текстовую строку,
    # синтезирует из нее речевой аудиофайл,
    # копирует полученный файл на сервер asterisk
    # подключается к asterisk ami и воспроизводит файл/ 
    #
    # Для работы скрипта требуется установить php-ssh2
    # 
    # sudo apt-get update
    # sudo apt-get install php-ssh2
    # Сервер на котором запускается php и сервер  
    # asterisk - на разных ip
    ###################################################
    
    
    # --- Входные переменные ---
    $speaker = $_REQUEST['speaker']; // Голоса: Женские - jane, oksana, alyss omazh, Мужские - zahar, ermil
    $emotion = $_REQUEST['emotion']; // Эмоциональная окраска голоса. Возможные значения: 
                     // good — радостный, доброжелательный
                     // evil — раздраженный
                     // neutral — нейтральный (используется по умолчанию)
    $speech = $_REQUEST['speech'];  // имя файла синтезированного текста (file.mp3)
    $text = $_REQUEST['text'];    // Синтезируемый текст
    
    
    # --- настройка Asterisk  ---
    $strhost = "192.168.1.11";     // Адрес сервера FreePBX
    $strport = "5038";        // Порт AMI 
    $timeout = "100";
    $ami_user = "openhab\r\n";    // Пользователь AMI интерфейса FreePBX
    $ami_password = "password\r\n";// Пароль AMI
    $ssh_user = "user";
    $ssh_password = "password";
    $errno=0 ;
    $errstr=0 ;
    
    
    # ------ Настройки Yandex.Speech ---------------
    $KeyCode="2a4c42ce-b445-43d8-b5a7-88f6cee9c1221a";    // API Key Yandex.Speech
    
    
    if (empty($speaker)) { $speaker = "omazh"; }; // значения по умолчанию
    if (empty($emotion)) { $emotion = "evil"; };  // значения по умолчанию
    if (empty($speech)) { $speech = "speech.mp3"; };  // значения по умолчанию
    if (empty($text)) { $text = "Внимание! Обнаружено нарушение периметра безопасности!"; };  // значения по умолчанию
    $SpeechFile="/tmp/$speech";    // Путь/Имя файла в который будет записана синтезируемая речь
    echo "$SpeechFile \r\n";
    $qs = http_build_query(array("format" => "mp3","lang" => "ru-RU","speaker" => $speaker,"key" =>$KeyCode,"emotion" => $emotion, "text" => $text));
    $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);
    $i=file_put_contents($SpeechFile, $soundfile);
    
    
    echo("i=$i \r\n");
    
    
    // Если синтезировали речь - копируем полученный файл на FreePBX
    if ( $i > 0 ) {
        // Подключаемся к серверу по ssh
        if ($connection = ssh2_connect($strhost, 22)) {
           echo "Connection Successful!\r\n";
        }  else {
          die("Connection Failed...\r\n");
        };
        // авторизуемся на сервере
        if (ssh2_auth_password($connection, $ssh_user, $ssh_password)) {
          echo "Authentication Successful!\r\n";
        } else {
          die("Authentication Failed...\r\n");
        }
        // Копируем файл на FreePBX
        ssh2_scp_send($connection, $SpeechFile, "/tmp/$speech", 0644); // /tmp/$speech - каталог должен совпадать с каталогом из контекста
                                       // /etc.asterisk/extention_custom.conf  -> pa-custom -> Playback(/tmp/${var1})
        if (!$connection) die('Send failed');
        };
    
    
    
    
    #-------------- вызываем asterisk AMI и воспроизводим синтезированный аудиофайл---------------------
    $var1 = basename($speech, '.mp3') + "\r\n\r\n"; // для asterisk требуется имя без расширения
    $sconn = fsockopen ($strhost, $strport, $$errno, $$errstr, $timeout) or die("Connection to $strhost:$strport failed");
    
    
    if (!$sconn) { echo "$errstr ($errno)
    \n"; } 
    
    
      else {
    
    
      fputs ($sconn, "Action: login\r\n");
      fputs ($sconn, "Username: $ami_user");
      fputs ($sconn, "Secret: $ami_password");
      fputs ($sconn, "Events: off\r\n\r\n");
      usleep(500);
    
    
      fputs ($sconn, "Action: Originate\r\n");
      fputs ($sconn, "Channel: Local/590@from-internal\r\n");
      fputs ($sconn, "Callerid: OpenHAB\r\n");
      fputs ($sconn, "Timeout: 15000\r\n");
      fputs ($sconn, "Context: pa-custom\r\n");
      fputs ($sconn, "Exten: 577\r\n");
      fputs ($sconn, "Priority: 1\r\n\r\n");
      fputs ($sconn, "Async: yes\r\n\r\n" );
      fputs ($sconn, "Variable: var1=$var1" );
      fputs ($sconn, "Action: Logoff\r\n\r\n");
      usleep (500);
    
    
      fclose ($sconn);
    
    
      } 
    ?>
    Последний раз редактировалось Smith2007; 16.10.2016 в 22:50.

  6. #26

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    При появлении события, которое необходимо озвучить ПЛК передает информацию на OpenHAB (по modbus TCP).
    Добрый день.

    Вас не затруднит выложить описание, как подружить ПЛК с OpenHAB ?

Страница 3 из 3 ПерваяПервая 123

Похожие темы

  1. сообщение PLC2: stopped
    от Olk_74 в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 28.11.2014, 09:38
  2. СМС сообщение
    от Сергеев Василий в разделе Сетевые технологии
    Ответов: 2
    Последнее сообщение: 09.03.2011, 08:24
  3. не могу прочесть сообщение
    от Карнаухов Дмитрий в разделе Трёп (Курилка)
    Ответов: 2
    Последнее сообщение: 23.03.2007, 05:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •