et encore dll et marché - page 13

 
nkaretnikov:

il n'est pas possible de lire un fichier wav à partir d'un bac à sable sans DLL ?

de l'aide

Par exemple, si le fichier audio Demo.wav se trouve dans le dossier terminal_data_directory\MQL5\Files, l'appel PlaySound() doit être écrit de cette manière :

//--- Jouer le fichier son Demo.wav depuis le répertoire terminal_data_directory\MQL5\Files\
PlaySound("\\\Files\\\\\\Demo.wav");

Le problème est que le moteur playsound lui-même est défectueux. Il ne combine pas les sons, mais arrête de jouer le précédent dès qu'une nouvelle commande arrive.

Le marché exige que le produit soit prêt à l'emploi et ne dépende pas de modules tiers. Mais il est possible de prendre une décision radicale : créer une solution en boîte sur la béquille playsound et, si vous disposez d'un module, par exemple dans kodobase, utiliser une solution normale par le biais du moteur wind.

 
nkaretnikov:

Je vois que vous êtes une personne expérimentée, pouvez-vous m'aider à rédiger un exemple de référence de prise de courant ?

La documentation est icihttps://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-usingWebSocket

Je comprends que l'instance_id est GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB.

Pendant que je lis le document...

Quelle est la raison exacte de l'échec de votre requête ? Il existe de bons exemples dans la documentation.

Je n'ai pas le temps maintenant, et c'est une chose inutile.

En ce qui concerne votre lien - si vous ne pouvez pas utiliser WebSocket - mieux vaut ne pas l'utiliser, vous gagnerez beaucoup de temps (si vous n'avez pas d'expérience en la matière). Il existe d'autres options que WebSocket.

Документация по MQL5: Сетевые функции / SocketCreate
Документация по MQL5: Сетевые функции / SocketCreate
  • www.mql5.com
//|                                                SocketExample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Отправка команды на сервер                                       |...
 
Andrei Trukhanovich:

de l'aide

Par exemple, si le fichier son Demo.wav se trouve dans le dossier terminal_data_directory\MQL5\Files, l'appel PlaySound() doit être écrit de cette manière :

//--- Jouer le fichier son Demo.wav depuis le répertoire terminal_data_directory\MQL5\Files\
PlaySound("\\\Files\\\\\\Demo.wav");

Le problème est que le moteur playsound lui-même est défectueux. Il ne combine pas les sons, mais arrête de jouer le précédent dès qu'une nouvelle commande arrive.

le marché exige que le produit fonctionne tout de suite et ne dépende pas de modules tiers. mais il est possible de faire un mouvement radical et de faire une solution de boîte sur la béquille playsound et si vous avez un certain module, par exemple dans kodobase, utilisez une solution normale par le moteur de vent. qui je comprends peut faire la reconnaissance de texte aussi.

c'est exactement ce que je veux dire ! )

Oui, de deux façons.

La première méthode est PlaySound et les pauses sont basées sur la vitesse de prononciation. Mais j'ai rencontré ce problème et au moment d'appeler les fonctions TTS natives de Windows, lorsque la deuxième phrase entre dans un flux occupé, nous obtenons une erreur d'exécution. Par conséquent, il y a un retard dans la classe basé sur la vitesse de prononciation de 100 caractères par minute. En gros, nous sortons de cette situation.

Méthode 2 - Générer le fichier de test par un code fermé et le lire par un code ouvert avec les DLLs activées

 
Serhii Shevchuk:

Pourquoi écrire inutilement quelque chose dans le dossier ? PlaySound peut jouer à partir de ressources, voir "Utilisation des ressources" dans le lien

P.S. Je ne l'ai pas essayé moi-même, mais puisque c'est écrit dans la documentation, cela doit être possible.

Eh bien, l'ordinateur veut une solution universelle où nous n'avons pas besoin d'intégrer les ressources sonores dans le conseiller expert. Il veut concevoir un système d'interaction entre le conseiller-expert et le serveur, dans lequel le premier crée un fichier texte de mots que l'utilisateur doit maintenant prononcer, et le serveur les convertit en .wav et les renvoie au conseiller-expert. Ensuite, le conseiller expert, sans le savoir, écrit le fichier à la place du fichier précédent (avec la précédente voix-off du serveur) et appelle PlaySound pour lire la nouvelle voix-off.

Ce schéma ne peut pas fonctionner.
 
Реter Konow:
Eh bien, TC souhaite une solution universelle, où il n'est pas nécessaire d'intégrer au préalable des ressources sonores dans Expert Advisor. Il veut concevoir un système d'interaction entre le conseiller expert et le serveur, dans lequel le premier crée un fichier texte de mots qui devraient NOW être prononcés par l'utilisateur, et le serveur les convertit en .wav et les renvoie au conseiller expert. Ensuite, le conseiller expert, sans le savoir, écrit le fichier à la place du fichier précédent (avec la précédente voix-off du serveur) et appelle PlaySound pour lire la nouvelle voix-off.

Un tel système ne peut pas fonctionner.

Je voulais dire en utilisant ResourceCreate

Créer une ressource à partir des données reçues. Et ensuite, jouez-le avec PlaySound. Mais je n'ai pas trouvé exactement cette connexion dans les exemples (je ne suis pas sûr qu'elle fonctionnera). C'est pourquoi j'ai supprimé le message précédent.

Документация по MQL5: Общие функции / ResourceCreate
Документация по MQL5: Общие функции / ResourceCreate
  • www.mql5.com
[in]  Относительный путь к файлу, содержащему данные для ресурса. Если путь начинается с обратной косой черты "\" (пишется "\\"), то файл ищется относительно папки Если второй вариант функции вызывается для...
 
Serhii Shevchuk:

Je voulais dire en utilisant ResourceCreate

Créer une ressource à partir des données reçues. Et ensuite, jouez-le avec PlaySound. Mais je n'ai pas trouvé exactement un tel lien dans les exemples (je ne suis pas sûr qu'il fonctionne). J'ai donc supprimé le message précédent.

Bonne idée. Je peux essayer, même si je ne suis pas sûr.)))
 
Serhii Shevchuk:

En quoi exactement votre requête ne fonctionne-t-elle pas ? Il existe de bons exemples dans la documentation .

Je n'ai pas le temps de comprendre le protocole des talkers pour le moment, et c'est inutile.

En ce qui concerne votre lien - si vous ne pouvez pas utiliser WebSocket - mieux vaut ne pas l'utiliser, vous gagnerez beaucoup de temps (si vous n'avez pas d'expérience en la matière). Il existe d'autres options que WebSocket.

voici ce qui échoue https://www.mql5.com/ru/forum/342293/page12#comment_16633648

Le fichier est créé, mais vide. Son nom



est différent du fichier qui est téléchargé par la commande curl



Ça laisse penser que le code que tu as écrit

//+------------------------------------------------------------------+
//|                                                   WebRequest.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string cookie=NULL,headers;
   char   post[],result[];
   char cost_char_data[];
   string  result_headers;
   
   headers = headers + "-u apikey:GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB";
   headers = headers + " --header \"Content-Type: application/json\"";
   headers = headers + " --header \"Accept: audio/wav\"";
   headers = headers + " --data \"{\"text\":\"hello world\"}\"";
   headers = headers + " --output hello_world.wav";
//output hello_world.wav ^

   string url="https://api.eu-gb.text-to-speech.watson.cloud.ibm.com";
//--- для работы с сервером необходимо добавить URL "https://finance.yahoo.com"
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"):
//--- обнуляем код последней ошибки
   ResetLastError();
//--- загрузка html-страницы с Yahoo Finance
   int res = WebRequest("POST",url,headers,1000,cost_char_data,result,result_headers);
   if(res==-1)
     {
      Print("Ошибка в WebRequest. Код ошибки  =",GetLastError());
      //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления
      MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
     }
   else
     {
      if(res==200)
        {
         //--- успешная загрузка
         PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
         //PrintFormat("Заголовки сервера: %s",headers);
         //--- сохраняем данные в файл
         int filehandle=FileOpen("output hello_world.wav",FILE_WRITE|FILE_BIN);
         if(filehandle!=INVALID_HANDLE)
           {
            //--- сохраняем содержимое массива result[] в файл
            FileWriteArray(filehandle,result,0,ArraySize(result));
            //--- закрываем файл
            FileClose(filehandle);
           }
         else
            Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         PrintFormat("Ошибка загрузки '%s', код %d",url,res);
     }
  }
//+------------------------------------------------------------------+


ne forme pas correctement la syntaxe WebRequest.

C'est-à-dire qu'il n'arrive pas à faire faire au WebRequest ce que fait curl.

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

voici ce qui ne fonctionne pas https://www.mql5.com/ru/forum/342293/page12#comment_16633648

.....

Je peux y jeter un œil, mais pas avant demain soir. Si vous ne l'avez pas encore compris vous-même.

 
Si le fichier sonore peut être lu à partir du dossier Files, où il est préenregistré par l'EA, la solution au problème sera réaliste si le fichier sonore résultant est cohérent.
 
Nikolai Karetnikov:

voici ce qui ne fonctionne pas https://www.mql5.com/ru/forum/342293/page12#comment_16633648

Le fichier est créé, mais il est vide. Son nom



est différent du fichier téléchargé par la commande curl



Cela indique que le code que vous avez écrit


ne forme pas correctement la syntaxe WebRequest.

C'est-à-dire que vous ne pouvez pas faire faire à WebRequest ce que fait curl.

et vous ne le ferez pas :-)

pourquoi passe-t-on les options de la commande curl dans les en-têtes HTTP ?

au moins, lisez quelques livres, regardez quelques exemples... sinon, nous allons tous vraiment vous écrire un article

Raison: