Реter Konow: Wenn eine Tondatei aus dem Ordner "Dateien" abgespielt werden kann, in dem sie vom Expert Advisor voraufgezeichnet wurde, dann ist die Lösung des Problems real, wenn die resultierende Tondatei integral ist.
Nein! In der Dokumentation steht, dass Sounddateien im Ordner Sounds gespeichert werden sollten.
https://www.mql5.com/ru/docs/common/playsound
Dies ist ein entscheidender Punkt bei diesem Thema. Wenn die Datei im Ordner "Dateien" nicht abgespielt werden kann, kommt PlaySound nicht in Frage. Dann ist es nicht nötig, etwas vom Server zurückzugeben. Warum? Es sei denn, PlaySound funktioniert plötzlich nicht mehr mit der EA-internen Ressource, was ich stark bezweifle...
Nun, dann muss man nicht immer der Dokumentation glauben)))
Wenn der TC nun gültige Audiodateien vom Server empfängt, die dann an einem Ort neu aufgenommen und im laufenden Betrieb abgespielt werden, dann ist das Problem der universellen Lösung für die Sprachausgabe von Textnachrichten an den Benutzer gelöst.
ZS: Kann PlaySound auch den Sound von internen Ressourcen abspielen, die von EA erstellt wurden? Dann ist es nicht nötig, die Datei in Files zu schreiben. Speichern Sie die Datei sofort in der Ressource und spielen Sie sie ab.
Реter Konow: Nun, man muss nicht immer der Dokumentation glauben)))
Wenn der TC nun gültige Tondateien vom Server empfängt, sie an einer Stelle neu aufnimmt und sie während der Fahrt abspielt, dann ist die Aufgabe einer universellen Lösung für die Sprachausgabe von Textnachrichten an den Benutzer gelöst.
ZS. Vielleicht kann PlaySound den Sound von internen Ressourcen abspielen, die von EA erstellt wurden?
Ich weiß nicht, in meinem Expert Advisor - wo es eine Aktion gibt, spielt es
Ich benutze es, um eine wav-Datei mit dem Wort TEST herunterzuladen.
dann Optionen entfernen
//+------------------------------------------------------------------+//| 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 |//+------------------------------------------------------------------+voidOnStart()
{
string cookie=NULL,headers;
char post[],result[];
char cost_char_data[];
string result_headers;
headers = "-u apikey:GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB --output hello_world.wav";
string url="https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST";
ResetLastError();
int res = WebRequest("GET",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);
}
elsePrint("Ошибка в FileOpen. Код ошибки =",GetLastError());
}
elsePrintFormat("Ошибка загрузки '%s', код %d",url,res);
}
}
//+------------------------------------------------------------------+
im Header steht nun die Autorisierungsoption -u, hinter der der Server auf den apikey wartet. Scheint Sinn zu machen, aber irgendetwas in der Syntax ist immer noch falsch
Code Ergebnis -"Webrequest4Voice (EURCHF,D1) Fehler beim Laden von 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', Code 401"
Wo können wir also ein Beispiel mit der Ausgabe in eine Binärdatei finden? ))
Bei dem Versuch, es herauszufinden, habe ich die Syntax des url-Befehls selbst minimiert
eine wav-Datei mit dem Wort "TEST" herunterladen
dann Optionen entfernen
im Header nun die Autorisierungsoption -u, hinter der der Server auf den apikey wartet. Scheint Sinn zu machen, aber irgendetwas in der Syntax ist immer noch falsch
Code Ergebnis -"Webrequest4Voice (EURCHF,D1) Fehler beim Laden von 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', Code 401"
Um eine HTTP-Anfrage von curl-Optionen in WebRequest-Parameter zu übersetzen, müssen Sie Folgendes tun:
1. Schauen Sie generell bei Wikipedia nach, wie HTTP strukturiert ist.
2. Schauen Sie in der Curl-Dokumentation nach, was die Optionen bedeuten und warum sie verwendet werden
3. lesen Sie die WebRequest-Hilfe und sehen Sie Beispiele, auch in diesem Thread eine Menge
4. man sollte Code schreiben, der sich bewusst ist, was man getan hat :-) was, warum und wofür er verwendet wird.
Sie erwarten offensichtlich, dass alle 4 Punkte für Sie erledigt werden. Ich weiß, es ist Wochenende, die Zeit ist knapp, und Sie haben viele Ideen. Es muss schnell gehen.
Wenn eine Tondatei aus dem Ordner "Dateien" abgespielt werden kann, in dem sie vom Expert Advisor voraufgezeichnet wurde, dann ist die Lösung des Problems real, wenn die resultierende Tondatei integral ist.
Jemand sollte versuchen, die .wav-Datei aus dem Ordner "Files" auszuführen. Ich frage mich, ob es funktioniert.))
Ja, es funktioniert. Ich habe den gesamten Ordner kopiert.
C:\Users\San\AppData\Roaming\MetaQuotes\Terminal\3 DE8A6E768D9369994F541727D733DE8\MQL5\Files\Sounds\Ja, es funktioniert. Ich habe den gesamten Ordner kopiert.
Das nenne ich Hoffnung.))
Ich habe den Song noch einmal überprüft und ihn noch einmal laufen lassen.
https://yadi.sk/d/EGsTJGYBmDFnGgden Song noch einmal überprüft hat
https://yadi.sk/d/EGsTJGYBmDFnGgNun, man muss nicht immer der Dokumentation glauben)))
Ich weiß nicht, in meinem Expert Advisor - wo es eine Aktion gibt, spielt es
natürlich eine eigene Melodie oder einen eigenen Sound
Ich kann einen Blick darauf werfen, aber nicht vor morgen Abend. Wenn Sie es bis dahin nicht selbst herausgefunden haben.
und das wirst du auch nicht :-)
Warum werden die Optionen für den Befehl curl in die HTTP-Header eingefügt?
Warum liest du nicht wenigstens ein paar Bücher, schaust dir ein paar Beispiele an... sonst schreiben wir dir alle einen Artikel
Wo kann ich also ein Beispiel mit der Ausgabe in eine Binärdatei finden? ))
Bei dem Versuch, es herauszufinden, habe ich die Syntax des url-Befehls selbst minimiert
Ich benutze es, um eine wav-Datei mit dem Wort TEST herunterzuladen.
dann Optionen entfernen
im Header steht nun die Autorisierungsoption -u, hinter der der Server auf den apikey wartet. Scheint Sinn zu machen, aber irgendetwas in der Syntax ist immer noch falsch
Code Ergebnis -"Webrequest4Voice (EURCHF,D1) Fehler beim Laden von 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', Code 401"
Können Sie mir einen Tipp geben? ))
Wo können wir also ein Beispiel mit der Ausgabe in eine Binärdatei finden? ))
Bei dem Versuch, es herauszufinden, habe ich die Syntax des url-Befehls selbst minimiert
eine wav-Datei mit dem Wort "TEST" herunterladen
dann Optionen entfernen
im Header nun die Autorisierungsoption -u, hinter der der Server auf den apikey wartet. Scheint Sinn zu machen, aber irgendetwas in der Syntax ist immer noch falsch
Code Ergebnis -"Webrequest4Voice (EURCHF,D1) Fehler beim Laden von 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', Code 401"
Irgendwelche Tipps? ))
Um eine HTTP-Anfrage von curl-Optionen in WebRequest-Parameter zu übersetzen, müssen Sie Folgendes tun:
1. Schauen Sie generell bei Wikipedia nach, wie HTTP strukturiert ist.
2. Schauen Sie in der Curl-Dokumentation nach, was die Optionen bedeuten und warum sie verwendet werden
3. lesen Sie die WebRequest-Hilfe und sehen Sie Beispiele, auch in diesem Thread eine Menge
4. man sollte Code schreiben, der sich bewusst ist, was man getan hat :-) was, warum und wofür er verwendet wird.
Sie erwarten offensichtlich, dass alle 4 Punkte für Sie erledigt werden. Ich weiß, es ist Wochenende, die Zeit ist knapp, und Sie haben viele Ideen. Es muss schnell gehen.
Aber Sie müssen es trotzdem selbst tun.