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

 
Maxim Kuznetsov #:

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

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

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

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

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

Хорошо бы пример на MQL5 .... прям очень хорошо бы

 
Alexey Viktorov #:

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

А вот это действительно проблема, поскольку у самого было такое пару раз, когда я кому то о ней говорил не обращался, а говорил, она постоянно пыталась меня научить уму разума. Как вариант назвать её Гаврюша, гаврюшь в Вашем обществе надеюсь нет? :-)
 

В этом году разработал на МТ5 обширный торговый бэк-енд для Телеграмм-бота, и торгую теперь не из Мобильного приложения, а через бота - реально удобней, можно делать собственные торговые команды и т.д.

На основе этого опыта могу вполне представить как сделать торговый  бэк-енд для Алисы/Алексы/Сири/Олега и пр. - по сути необходимо найти API для получения последней команды в текстовом формате, по аналогии с api.telegram.org. После этого все просто - считываешь из этого API команду, анализируешь ее и передаешь в  одну из исполняемых функций. Если нет желания заморачиваться с написанием логичистического анализатора в рамках MT5 и + сверху добавить флексика в трактовке выражений, то необходимо использовать доп. прослойку для анализа и ведения диалогов, типа DialogFlow etc, и получать из нее уже готовые стандартизированные команды.

Вообще если бы я занялся этой темой, то выбрался наверное Alexa - у Microsoft на Azure уже выстроены многочисленные сервисы на основе ML, Яндекс пока существенно уступает.

 
Тема очень интересная, хотя и из области хобби. Я бы поиграл, если бы нашёл время ((
Пока мысли такие.
1. Использовать внешние сервисы не можно, а нужно. Разницу произношения синтезаторов в оффлайне и онлайн замечали? Она огромна.
2. Чтобы не было большого трафика, надо генерить не WAV, а AAC или MP3, и воспроизводить через dll.
3. Чтобы не генерить одни и те же фразы, нужен кеш из уже готовых файлов.
4. Есть много синтезаторов получше известных Google, Yandex, Microsoft, но они малодоступны. А из перечисленных нормально только Google, ИМХО 
 

Поддержка яндекса ответила пока следующее:

1. Теперь у нас есть бот в Telegram, который может помочь вам удалённо дать команду колонке сказать определённую фразу. Найти его можно по названию @alice_speaker_bot .

2. Возможно, вам подойдет протокол программного управления устройствами.

Протокол программного управления устройствами - Платформа умного дома Яндекса
  • yandex.ru
С помощью данного API пользователь может самостоятельно автоматизировать управление устройствами, подключенными к платформе умного дома Яндекса.
 

Блин !! Я-ж совсем забыл...у меня-же всё есть готовое :-)

#property copyright "Maxim A.Kuznetsov"
#property link      "https://www.luxtrade.tk"
#property version   "1.00"

#include <ATcl/ATcl.mqh>

void OnStart()
{
   ATcl *tcl = new ATcl;
   if (tcl==NULL) return;
   if (tcl.OnInit()!=INIT_SUCCEEDED) {
      tcl.OnDeinit(REASON_PROGRAM);
      delete tcl;
      return;
   }
   tcl.Eval("package require cawt");
   tcl.Eval("set speaker [ Sapi::Open ]");
   tcl.Set("balance",AccountInfoDouble(ACCOUNT_BALANCE));
   tcl.Eval("Sapi::Speak $speaker \"Привет мир\"");
   tcl.Eval("Sapi::Speak $speaker \"My balance is $balance\"");
   tcl.Eval("Cawt Destroy");
   tcl.OnDeinit(REASON_PROGRAM);
   delete tcl;
}

"Привет мир" произносит довольно приятно и понятно. Без Алисы и внешних сервисов

Вот с числительными отчего-то проблема, по цифрам читает. Надо в документации Sapi порыться, может там какие флаги нужны

 
Maxim Kuznetsov #:

Блин !! Я-ж совсем забыл...у меня-же всё есть готовое :-)

"Привет мир" произносит довольно приятно и понятно. Без Алисы и внешних сервисов

Вот с числительными отчего-то проблема, по цифрам читает. Надо в документации Sapi порыться, может там какие флаги нужны

а можно ссылку на последнюю версию ATcl.mqh для МТ5?

 

вот типа такого - управлять экспертом голосом

Распознавание речи Windows позволяет управлять компьютером одним лишь голосом, без клавиатуры или мыши. В следующих таблицах перечислены голосовые команды, которые можно использовать.

Если слово или фраза выделенны полужирным шрифтом, это пример. Замените его похожими словами, чтобы получить нужный результат.

О том, как настроить функцию распознавания речи, читайте в статье Использование распознавания речи.

Примечания: 

Если вы не знаете, какие команды использовать, произнесите "What can I say?".

Распознавание речи доступно только для следующих языков: английский (США, Соединенное Королевство, Канада, Индия и Австралия), французский, немецкий, японский, диалект китайского языка (традиционное и упрощенное китайский) и испанский.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

//+------------------------------------------------------------------+
//|                                               What can I say.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 <Trade\Trade.mqh>
CTrade m_trade; // trading object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   LongClosed();
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool LongClosed(void)
  {
   bool res=false;
//--- should it be closed?
   if(ЗДЕСЬ ПРОГРАММА - СЧИТЫВАЕТ ГОЛОСОВУЮ КОМАНДУ)                  
     {
      //--- close position
      if(m_trade.PositionClose(Symbol()))
         printf("Long position by %s to be closed",Symbol());
      else
         printf("Error closing position by %s : '%s'",Symbol(),m_trade.ResultComment());
      //--- processed and cannot be modified
      res=true;
     }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+

\\\\\

Есть не большая проблемка! нужно ещё создать такую программку.

 
плохой код .... он у вас будет на OnTick ждать голосовую команду????  :-)
 
Boris Egorov #:
плохой код .... он у вас будет на OnTick ждать голосовую команду????  :-)

это для понимания - что бы, от чего то отталкиваться.  

Причина обращения: