Реter Konow: Se un file audio può essere riprodotto dalla cartella Files, dove è pre-registrato da Expert Advisor, allora la soluzione del problema sarà reale, se il file audio risultante sarà integrale.
No! La documentazione dice che i file audio devono essere memorizzati nella cartella Sounds.
https://www.mql5.com/ru/docs/common/playsound
Questa è una questione critica per l'argomento. Se il file non viene riprodotto dalla cartella Files, allora PlaySound è fuori questione. Allora non c'è bisogno di restituire nulla dal server. Perché? A meno che PlaySound improvvisamente non funzioni con la risorsa interna di EA, cosa di cui dubito fortemente...
Beh, allora non bisogna sempre credere alla documentazione)))
Ora, se il TC riceverà file audio validi dal server, poi ri-registrati in un posto e riprodotti al volo, allora il problema della soluzione universale per il voiceover dei messaggi di testo all'utente sarà risolto.
ZS. PlaySound può anche riprodurre il suono da risorse interne create da EA? Allora non c'è bisogno di scrivere il file su Files. Salvare immediatamente il file nella risorsa e riprodurlo.
Реter Konow: Beh, non bisogna sempre credere alla documentazione)))
Ora, se il TC riceverà file audio validi dal server, poi li riregistrerà in un posto e li riprodurrà al volo, allora il compito di una soluzione universale per dare voce ai messaggi di testo all'utente sarà risolto.
ZS. Forse PlaySound può riprodurre il suono dalle risorse interne create da EA?
Non so, nel mio Expert Advisor - dove c'è qualche azione, gioca
Lo uso per scaricare un file wav con la parola TEST
poi rimuovere le opzioni
//+------------------------------------------------------------------+//| 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);
}
}
//+------------------------------------------------------------------+
nell'intestazione ora è l'opzione di autorizzazione -u, dietro la quale il server aspetta l'apikey. Sembra avere senso, ma qualcosa nella sintassi è ancora sbagliato
Il risultato dell'esecuzione del codice è"Webrequest4Voice (EURCHF,D1) Error loading 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', code 401".
dove possiamo trovare un esempio con l'output in un file binario? ))
cercando di capirlo, ho minimizzato la sintassi del comando url stesso
scaricare un file wav con la parola TEST
poi rimuovere le opzioni
nell'intestazione ora l'opzione di autorizzazione -u dietro la quale il server attende l'apikey. Sembra avere senso, ma qualcosa nella sintassi è ancora sbagliato
codice risultato -"Webrequest4Voice (EURCHF,D1) Errore nel caricare 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', codice 401"
Per tradurre una richiesta HTTP da opzioni curl a parametri WebRequest, è necessario:
1. in generale, guardate wikipedia per vedere come è strutturato HTTP
2. controllare la documentazione di Curl per vedere cosa significano le opzioni e perché sono usate
3. leggere la guida WebRequest e vedere gli esempi, anche in questo thread molto
4. Dovreste scrivere codice essendo consapevoli di ciò che avete fatto :-) cosa, perché e perché viene usato.
Ovviamente vi aspettate che tutti e 4 i punti siano fatti per voi. Capisco che è il fine settimana, il tempo è poco e avete molte idee. Deve essere veloce.
Se un file audio può essere riprodotto dalla cartella Files, dove è pre-registrato da Expert Advisor, allora la soluzione del problema sarà reale, se il file audio risultante sarà integrale.
Qualcuno provi ad eseguire il .wav dalla cartella Files. Chissà se funziona)).
Sì, funziona, ho copiato l'intera cartella
C:\Users\San\AppData\Roaming\MetaQuotes\Terminal\3 DE8A6E768D9369994F541727D733DE8\MQL5\Files\Sounds\Sì, funziona, ho copiato l'intera cartella
Ecco, questa è la speranza)).
ha ricontrollato la canzone e l'ha eseguita di nuovo
https://yadi.sk/d/EGsTJGYBmDFnGgricontrollato la canzone ha eseguito di nuovo
https://yadi.sk/d/EGsTJGYBmDFnGgBeh, non bisogna sempre credere alla documentazione)))
Non so, nel mio Expert Advisor - dove c'è qualche azione, gioca
naturalmente la sua melodia o il suo suono
Posso dare un'occhiata, ma non prima di domani sera. Se per allora non l'hai ancora capito da solo.
e non lo farai :-)
perché mettete le opzioni del comando curl nelle intestazioni HTTP?
Perché non leggi almeno qualche libro, guardi qualche esempio... altrimenti, ti scriveremo tutti un articolo
quindi dove posso trovare un esempio con l'output in un file binario? ))
cercando di capirlo, ho minimizzato la sintassi del comando url stesso
Lo uso per scaricare un file wav con la parola TEST
poi rimuovere le opzioni
nell'intestazione ora è l'opzione di autorizzazione -u, dietro la quale il server aspetta l'apikey. Sembra avere senso, ma qualcosa nella sintassi è ancora sbagliato
Il risultato dell'esecuzione del codice è"Webrequest4Voice (EURCHF,D1) Error loading 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', code 401".
Puoi darmi un suggerimento? ))
dove possiamo trovare un esempio con l'output in un file binario? ))
cercando di capirlo, ho minimizzato la sintassi del comando url stesso
scaricare un file wav con la parola TEST
poi rimuovere le opzioni
nell'intestazione ora l'opzione di autorizzazione -u dietro la quale il server attende l'apikey. Sembra avere senso, ma qualcosa nella sintassi è ancora sbagliato
codice risultato -"Webrequest4Voice (EURCHF,D1) Errore nel caricare 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', codice 401"
Puoi darmi un suggerimento? ))
Per tradurre una richiesta HTTP da opzioni curl a parametri WebRequest, è necessario:
1. in generale, guardate wikipedia per vedere come è strutturato HTTP
2. controllare la documentazione di Curl per vedere cosa significano le opzioni e perché sono usate
3. leggere la guida WebRequest e vedere gli esempi, anche in questo thread molto
4. Dovreste scrivere codice essendo consapevoli di ciò che avete fatto :-) cosa, perché e perché viene usato.
Ovviamente vi aspettate che tutti e 4 i punti siano fatti per voi. Capisco che è il fine settimana, il tempo è poco e avete molte idee. Deve essere veloce.
Ma devi comunque farlo da solo.