e di nuovo dll e mercato - pagina 14

 
Ре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...
 
Qualcuno provi ad eseguire il .wav dalla cartella Files. Chissà se funziona)).
 
//+------------------------------------------------------------------+
//|                                                       Sounds.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()
  {
//---
   PlaySound("\\Files\\Sounds\\alert.wav");
   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\request.wav");
   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\email.wav");
  }
//+------------------------------------------------------------------+
Реter Konow
:

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\
 
Alexsandr San:

Sì, funziona, ho copiato l'intera cartella

Ecco, questa è la speranza)).
 
Реter Konow:
Ecco, questa è la speranza)).

ha ricontrollato la canzone e l'ha eseguita di nuovo

   Sleep(1*1000);
   PlaySound("\\Files\\Sounds\\Kazka.wav");
https://yadi.sk/d/EGsTJGYBmDFnGg
 
Alexsandr San:

ricontrollato la canzone ha eseguito di nuovo

https://yadi.sk/d/EGsTJGYBmDFnGg
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

                     ObjectsDeleteAll(0,InpObjDownNameG);
                     IndicatorDelete();
                     PlaySound("ok.wav");
                     if(InpChartInd && Obj_SELLChartInd())
                        return;

naturalmente la sua melodia o il suo suono

 
Serhii Shevchuk:

Posso dare un'occhiata, ma non prima di domani sera. Se per allora non l'hai ancora capito da solo.

Maxim Kuznetsov:

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


curl -X GET -u ^
apikey:GR1bb3zVMs9fcNKL6pA9-5 zj9ptWliCu6eh9oupUnpZB ^
--output hello_world.wav ^
https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST

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                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   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);
           }
         else
            Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         PrintFormat("Ошибка загрузки '%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".

Puoi darmi un suggerimento? ))

 
Nikolai Karetnikov:

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? ))

Cosa significa l'errore 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.

Ma devi comunque farlo da solo.