Алиса (интеграция с Яндекс станциями)

 
Добрый день! Вопрос такой, кто-нибудь в курсе как можно из кода советника заставить яндекс станцию произнести какую либо фразу? Может кто то занимался этим вопросом? 
 
Boris Egorov:
Добрый день! Вопрос такой, кто-нибудь в курсе как можно из кода советника заставить яндекс станцию произнести какую либо фразу? Может кто то занимался этим вопросом? 

вот что то похожее   

и снова dll и маркет
и снова dll и маркет
  • 2020.06.02
  • www.mql5.com
День добрый! Правило №1 dll на Маркете запрещен...
 

Тю я то думал.....

Дело в том что я оказался пользователем Алисы в течении года и когда знаешь как с ней обращаться, какие команды ей давать тогда становится реально удобно делать те или иные дела. НО реально было бы прикольно научить Алису открывать позиции, закрывать или переворачиваться по голосовой команде. Так и вижу: "Алиса открой позицию на покупку в размере одного лота по инструменты Si"  и она такая "Слушаюсь и повинуюсь мой господин", "Позиция открыта". Вот это было бы круто, а не Ваше это всё....

 
Mihail Marchukajtes #:

Тю я то думал.....

Дело в том что я оказался пользователем Алисы в течении года и когда знаешь как с ней обращаться,

И как-же с ней обращаться, если в машине сидит племянница по имени Алиса и когда что-то ей говоришь, эта неодушевлённая идиотка встревает в разговор… Как эту дуру научить не встревать в чужие разговоры?

 
Mihail Marchukajtes #:

Тю я то думал.....

Дело в том что я оказался пользователем Алисы в течении года и когда знаешь как с ней обращаться, какие команды ей давать тогда становится реально удобно делать те или иные дела. НО реально было бы прикольно научить Алису открывать позиции, закрывать или переворачиваться по голосовой команде. Так и вижу: "Алиса открой позицию на покупку в размере одного лота по инструменты Si"  и она такая "Слушаюсь и повинуюсь мой господин", "Позиция открыта". Вот это было бы круто, а не Ваше это всё....

вы слишком далеко глядите, хотя бы пусть научится сообщать что то

 

ссылку выше давал - 

это больше не озвучивает  

   string  url="https://texttospeech.googleapis.com/v1/text:synthesize?key=AIzaSyCaLxPh84wXpLkT-zOE04MlvHj3JhLXU0w";

попробовал внести изменения   на так   string  url="https://texttospeech.ru/";

Захват

что то нужно ещё прописать !?

//+------------------------------------------------------------------+
//|                                                  Реter Konow.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <JAson.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   char    result[];
   char    post[];
   string  url="https://texttospeech.ru/";
   string  headers;
   string  result_headers;
   int     status;
   string jsonbody;
   headers = "Content-Type: application/json";
   jsonbody = "{\"input\":{\"text\":\"one, two\"},\"voice\":{\"languageCode\":\"en-gb\",\"name\":\"en-GB-Wavenet-B\"},\"audioConfig\":{\"audioEncoding\":\"LINEAR16\"}}";
   jsonbody = "{\"input\":{\"text\":\"раз, два, три, четыре, пять, вышел зайчик погулять\"},\"voice\":{\"languageCode\":\"ru-RU\",\"name\":\"ru-RU-Wavenet-B\"},\"audioConfig\":{\"audioEncoding\":\"LINEAR16\"}}";
   int q = StringToCharArray(jsonbody,post,0,-1,CP_UTF8);
   ArrayResize(post, q - 1);
   status=WebRequest("POST",url,headers,100000,post,result,result_headers);
   if(status==-1)
     {
      Print("Ошибка в WebRequest. Код ошибки  =",GetLastError());
      //---
      StringSetLength(url,StringFind(url,"/",8));
      MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
     }
   else
     {
      if(status==200)
        {
         CJAVal  CJasonResult;
         string lBase64String;
         char lBase64ResultArray[];
         char lBinaryDataArray[];
         char lkey[1];
         CJasonResult.Deserialize(result);
         lkey[0]=0;
         lBase64String = CJasonResult["audioContent"].ToStr();
         StringToCharArray(lBase64String,lBase64ResultArray,0,StringLen(lBase64String));
         CryptDecode(CRYPT_BASE64,lBase64ResultArray,lkey,lBinaryDataArray);
         //--- успешная загрузка
         PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
         PrintFormat("Заголовки сервера: %s",result_headers);
         //--- сохраняем данные в файл
         int filehandle=FileOpen("result.wav",FILE_WRITE|FILE_BIN);
         if(filehandle!=INVALID_HANDLE)
           {
            //--- сохраняем содержимое массива result[] в файл
            FileWriteArray(filehandle,lBinaryDataArray,0,ArraySize(result));
            //--- закрываем файл
            FileClose(filehandle);
            PlaySound("\\Files\\result.wav");
           }
         else
            Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         PrintFormat("Ошибка загрузки '%s', код %d",url,status,result_headers);
     }
  }
//+------------------------------------------------------------------+

надо только ещё этоJAson.mqh

Онлайн озвучка текста голосом робота
Онлайн озвучка текста голосом робота
  • texttospeech.ru
Озвучка текста голосом робота. Онлайн синтез речи. Это бесплатный инструмент преобразования из текста в голос. Вы можете озвучить свои ролики. Программа может синтезировать женским и мужским голосом.
 
SanAlex #:

совершенно не интересно воспроизводить wav в советнике, у меня оно давно работает .... 

 
SanAlex #:

ссылку выше давал - 

это больше не озвучивает  

попробовал внести изменения   на так   string  url="https://texttospeech.ru/";


что то нужно ещё прописать !?

надо только ещё этоJAson.mqh

кто заинтересовался - ещё нужно в настройках разрешить адрес

Захват 2 

 
Boris Egorov #:

совершенно не интересно воспроизводить wav в советнике, у меня оно давно работает .... 

.wav это очень просто . а это для совершенства советников в 21 веке

 
SanAlex #:

.wav это очень просто . а это для совершенства советников в 21 веке

вообще не согласен и вот по каким причинам:

1. советник должен работать всегда и не зависить от внешних сервисов, то есть отправил данные - произнесла колонка - хорошо, нет - ну и пофик,

у вас же сначала создается wav файл с помощью внешнего интернет ресурса, а потом оно воспроизводится, тогда уж правильнее заранее нагенерировать wav файлы и тупо их воспроизводить, у меня кстати так и сделано

2. ваше решение - вообще не решение, поскольку робот работает на удаленном сервере, а человек не всегда к нему подключен ... потому wav вообще не решает проблемы

 

внешний сервис TextToSpeech это неспортивно на сайте разработчиков (и тем паче) пользователей питона. А для торговых программ вообще противопоказано - нельзя им просто так в сеть лазить.

Быстрый поиск в яндексе даёт прекрасную вещь: https://github.com/snakers4/silero-models#text-to-speech

(и пара статей на хабре от авторов: https://habr.com/ru/post/549480/ и https://habr.com/ru/post/563484/)

остаётся только прикрутить питон к mql5 :-) 

делитесь историями успеха !

GitHub - snakers4/silero-models: Silero Models: pre-trained speech-to-text, text-to-speech models and benchmarks made embarrassingly simple
GitHub - snakers4/silero-models: Silero Models: pre-trained speech-to-text, text-to-speech models and benchmarks made embarrassingly simple
  • github.com
Silero Models: pre-trained speech-to-text, text-to-speech models and benchmarks made embarrassingly simple - GitHub - snakers4/silero-models: Silero Models: pre-trained speech-to-text, text-to-spee...