und wieder dll und Markt - Seite 13

 
nkaretnikov:

ist es nicht möglich, eine wav-Datei aus einer Sandbox ohne DLL abzuspielen?

von Hilfe

Wenn sich beispielsweise die Audiodatei Demo.wav im Ordner terminal_data_directory\MQL5\Files befindet, sollte der PlaySound()-Aufruf auf diese Weise geschrieben werden:

//--- Abspielen der Sounddatei Demo.wav aus dem terminal_data_directory\MQL5\Files\
PlaySound("\\\\Files\\\Demo.wav");

Das Problem ist, dass die Playsound-Engine selbst fehlerhaft ist. Sie kombiniert die Sounds nicht, sondern hört auf, den vorherigen abzuspielen, sobald ein neuer Befehl eintrifft.

Auf dem Markt gibt es eine Anforderung, dass das Produkt sollte out of the box zu arbeiten und nicht auf Module von Drittanbietern abhängen. aber es ist möglich, einen radikalen Schritt zu machen - eine Box-Lösung auf Playsound Krücke und in Anwesenheit von einigen Modulen zu machen, zum Beispiel in kodobase gebucht, verwenden Sie eine normale Lösung durch die Win-Engine. die ich verstehe und Texterkennung ist auch in der Lage.

 
nkaretnikov:

Ich sehe, Sie sind eine erfahrene Person, können Sie mir helfen, ein Beispiel für eine Socket-Referenz zu schreiben?

Die Dokumentation finden Sie hierhttps://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-usingWebSocket

Soweit ich weiß, lautet dieinstance_id GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB

Während ich das Dokument lese...

Woran genau scheitert Ihre Anfrage? In der Dokumentation finden sich gute Beispiele.

Ich habe jetzt keine Zeit, und es ist sinnlos.

In Bezug auf Ihren Link - wenn Sie nicht WebSocket verwenden können - besser nicht zu verwenden, werden Sie eine Menge Zeit sparen (wenn Sie keine Erfahrung mit ihm haben). Neben WebSocket gibt es noch andere Optionen.

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

von Hilfe

Wenn sich beispielsweise die Sounddatei Demo.wav im Ordner terminal_data_directory\MQL5\Files befindet, sollte der PlaySound()-Aufruf auf diese Weise geschrieben werden:

//--- Abspielen der Sounddatei Demo.wav aus dem terminal_data_directory\MQL5\Files\
PlaySound("\\\\Files\\\Demo.wav");

Das Problem ist, dass die Playsound-Engine selbst fehlerhaft ist. Sie kombiniert die Sounds nicht, sondern hört auf, den vorherigen abzuspielen, sobald ein neuer Befehl eintrifft.

Der Markt verlangt, dass das Produkt sofort funktioniert und nicht von Modulen von Drittanbietern abhängt. Aber es ist möglich, einen radikalen Schritt zu machen und eine Box-Lösung auf der Grundlage von Playsound zu entwickeln, und wenn Sie ein Modul haben, zum Beispiel in kodobase, verwenden Sie eine normale Lösung durch die Wind-Engine, die meines Wissens auch Texterkennung kann.

Das ist genau mein Punkt! )

Ja, 2 Möglichkeiten.

Die 1. Möglichkeit ist PlaySound und macht Pausen auf der Grundlage der Aussprachegeschwindigkeit. Aber ich bin darauf gestoßen und in der Phase des Aufrufs der nativen Windows-TTS-Funktionen, wenn die zweite Phrase in einen belegten Stream gelangt, erhalten wir einen Laufzeitfehler. Daher gibt es eine Verzögerung in der Klasse, die auf der Aussprachegeschwindigkeit von 100 Zeichen pro Minute basiert. Im Grunde genommen kommen wir aus dieser Situation heraus.

Methode 2 - Erzeugen einer Testdatei durch geschlossenen Code und Abspielen durch offenen Code mit aktivierten DLLs

 
Serhii Shevchuk:

Warum unnötig etwas in den Ordner schreiben? PlaySound kann von Ressourcen abspielen, siehe "Ressourcen verwenden" im Link

P.S. Ich habe es nicht selbst ausprobiert, aber da es in der Dokumentation steht, muss es möglich sein.

Nun, der Computer möchte eine universelle Lösung, bei der wir keine Sound-Ressourcen in den Expert Advisor integrieren müssen. Er möchte ein Interaktionssystem zwischen dem Expert Advisor und dem Server entwickeln, bei dem der erste eine Textdatei mit Wörtern erstellt, die JETZT vom Benutzer gesagt werden müssen, und der Server sie in .wav umwandelt und an den Expert Advisor zurückschickt. Anschließend schreibt der Expert Advisor unwissentlich die Datei anstelle der vorherigen Datei (mit dem vorherigen Voiceover vom Server) und ruft PlaySound auf, um das neue Voiceover abzuspielen.

Dieses System kann nicht funktionieren.
 
Реter Konow:
Nun, TC möchte eine universelle Lösung, bei der es nicht notwendig ist, vorher Sound-Ressourcen in Expert Advisor zu integrieren. Er möchte ein Interaktionssystem zwischen dem Expert Advisor und dem Server entwickeln, bei dem der erste eine Textdatei mit Wörtern erstellt, die JETZT vom Benutzer gesagt werden sollen, und der Server sie in .wav umwandelt und an den Expert Advisor zurückschickt. Anschließend schreibt der Expert Advisor unwissentlich die Datei anstelle der vorherigen Datei (mit dem vorherigen Voiceover vom Server) und ruft PlaySound auf, um das neue Voiceover abzuspielen.

Ein solches System kann nicht funktionieren.

Ich meinte die Verwendung von ResourceCreate

Erstellen Sie eine Ressource aus den empfangenen Daten. Und spielen Sie es dann mit PlaySound ab. Aber ich habe genau eine solche Verbindung in den Beispielen nicht gefunden (ich bin nicht sicher, ob es funktioniert). Deshalb habe ich die vorherige Nachricht gelöscht.

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

Ich meinte die Verwendung von ResourceCreate

Erstellen Sie eine Ressource aus den empfangenen Daten. Und spielen Sie es dann mit PlaySound ab. Da ich aber keinen solchen Link in den Beispielen gefunden habe (und nicht sicher bin, ob er funktioniert), habe ich die vorherige Nachricht gelöscht.

Tolle Idee. Ich kann es versuchen, obwohl ich mir nicht sicher bin.)))
 
Serhii Shevchuk:

Was genau funktioniert bei Ihrer Abfrage nicht? In der Dokumentation finden sich gute Beispiele.

Ich habe jetzt keine Zeit, mich mit dem Protokoll des Sprechers zu befassen, und es ist nutzlos.

In Bezug auf Ihren Link - wenn Sie nicht verwenden können WebSocket - besser nicht zu verwenden, werden Sie eine Menge Zeit sparen (wenn keine Erfahrung mit ihm). Neben WebSocket gibt es noch andere Optionen.

Hier ist, was nicht funktioniert https://www.mql5.com/ru/forum/342293/page12#comment_16633648

Die Datei wird erstellt, ist aber leer. Sein Name



unterscheidet sich von der Datei, die mit dem Befehl curl heruntergeladen wird



Es deutet irgendwie darauf hin, dass der von Ihnen geschriebene Code

//+------------------------------------------------------------------+
//|                                                   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);
     }
  }
//+------------------------------------------------------------------+


bildet die WebRequest-Syntax nicht korrekt.

Das heißt, es gelingt nicht, dass die WebRequest das tut, was curl tut

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

Das funktioniert nicht: https://www.mql5.com/ru/forum/342293/page12#comment_16633648

.....

Ich kann sie mir ansehen, aber nicht vor morgen Abend. Wenn Sie es bis dahin nicht selbst herausgefunden haben.

 
Wenn die Tondatei aus dem Ordner "Dateien" abgespielt werden kann, in dem sie vom EA aufgezeichnet wurde, dann ist die Lösung des Problems realistisch, wenn die resultierende Tondatei kohärent ist.
 
Nikolai Karetnikov:

Das funktioniert nicht: https://www.mql5.com/ru/forum/342293/page12#comment_16633648

Die Datei wird erstellt, ist aber leer. Sein Name



sich von der Datei unterscheidet, die mit dem Befehl curl heruntergeladen wurde



Dies ist ein Hinweis darauf, dass der von Ihnen geschriebene Code


bildet die WebRequest-Syntax nicht korrekt.

D.h. Sie können WebRequest nicht dazu bringen, das zu tun, was curl tut

und das wirst du auch nicht :-)

Warum übergibt man die Optionen für den Befehl curl in den HTTP-Headern?

Lesen Sie wenigstens ein paar Bücher, schauen Sie sich ein paar Beispiele an... sonst schreiben wir Ihnen wirklich einen Artikel