e di nuovo dll e mercato - pagina 13

 
nkaretnikov:

non è possibile riprodurre un file wav da una sandbox senza una DLL?

da aiuto

Per esempio, se il file audio Demo.wav si trova nella cartella terminal_data_directory\MQL5\Files, allora la chiamata PlaySound() dovrebbe essere scritta in questo modo:

//--- riprodurre il file audio Demo.wav da terminal_data_directory\MQL5\Files\
PlaySound("\\\Files\Demo.wav");

Il problema è che il motore playsound stesso è difettoso. Non combina i suoni, ma smette di suonare quello precedente non appena arriva un nuovo comando.

Nel marketplace c'è un requisito che il prodotto dovrebbe funzionare out of the box, non dipendere da moduli di terze parti. ma è possibile fare una mossa radicale - fare una soluzione box su stampella playsound e se c'è qualche modulo, per esempio pubblicato in kodobase, usare una soluzione normale attraverso il motore wind. che come ho capito può anche riconoscere il testo.

 
nkaretnikov:

Vedo che sei una persona esperta, puoi aiutarmi a scrivere un esempio di riferimento per le prese?

La documentazione è quihttps://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-usingWebSocket

Ho capito cheinstance_id è GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB

Mentre leggo il documento...

Che cosa esattamente sta fallendo la tua query? Ci sono buoni esempi nella documentazione.

Ora non ho tempo, ed è una cosa inutile.

Per quanto riguarda il tuo link - se non puoi usare WebSocket - meglio non usare, risparmierai un sacco di tempo (se non hai esperienza con esso). Ci sono altre opzioni oltre a WebSocket.

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

da aiuto

Per esempio, se il file audio Demo.wav si trova nella cartella terminal_data_directory\MQL5\Files, la chiamata PlaySound() dovrebbe essere scritta in questo modo:

//--- riprodurre il file audio Demo.wav da terminal_data_directory\MQL5\Files\
PlaySound("\\\Files\Demo.wav");

Il problema è che il motore playsound stesso è difettoso. Non combina i suoni, ma smette di suonare quello precedente non appena arriva un nuovo comando.

il mercato richiede che il prodotto funzioni out of the box e non dipenda da moduli di terze parti. ma è possibile fare una mossa radicale e fare una soluzione box sulla stampella di playsound e se hai qualche modulo, per esempio in kodobase, usare una soluzione normale attraverso il motore wind. che mi sembra di capire possa fare anche il riconoscimento del testo.

Questo è esattamente il mio punto! )

Sì, in 2 modi.

Il 1° modo è PlaySound e mette in pausa in base alla velocità di pronuncia. Ma ho incontrato questo e nella fase di chiamata delle funzioni TTS native di Windows, quando la seconda frase entra in un flusso occupato, si ottiene un errore di runtime. Pertanto, c'è un ritardo nella classe basato sulla velocità di pronuncia di 100 caratteri al minuto. In linea di principio, usciamo da questa situazione.

Metodo 2 - Generare il file di prova da codice chiuso e riprodurlo da codice aperto con le DLL abilitate

 
Serhii Shevchuk:

Perché scrivere qualcosa inutilmente nella cartella? PlaySound può riprodurre da risorse, vedi "Uso delle risorse" nel link

P.S. Non l'ho provato io stesso, ma dato che è scritto nella documentazione, deve essere possibile.

Bene, il computer vuole una soluzione universale dove non abbiamo bisogno di integrare risorse sonore nell'Expert Advisor. Vuole progettare un sistema di interazione tra l'Expert Advisor e il server, in cui il primo crea un file di testo di parole che ORA devono essere dette dall'utente, e il server le converte in .wav e le rimanda all'Expert Advisor. Successivamente, l'Expert Advisor, inconsapevolmente, scrive il file al posto del file precedente (con il precedente voiceover dal server) e chiama PlaySound per riprodurre il nuovo voiceover.

Questo schema non può funzionare.
 
Реter Konow:
Bene, TC vuole una soluzione universale, dove non c'è bisogno di integrare prima le risorse sonore in Expert Advisor. Vuole progettare un sistema di interazione tra l'Expert Advisor e il server, in cui il primo crea un file di testo di parole che ORA dovrebbero essere dette dall'utente, e il server le converte in .wav e le rimanda all'Expert Advisor. Successivamente, l'Expert Advisor, inconsapevolmente, scrive il file al posto del file precedente (con il precedente voiceover dal server) e chiama PlaySound per riprodurre il nuovo voiceover.

Un tale schema non può funzionare.

Intendevo usare ResourceCreate

Crea una risorsa dai dati ricevuti. E poi giocarci con PlaySound. Ma non ho trovato esattamente questa connessione negli esempi (non sono sicuro che funzionerà). Ecco perché ho cancellato il messaggio precedente.

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

Intendevo usare ResourceCreate

Crea una risorsa dai dati ricevuti. E poi giocarci con PlaySound. Ma non ho trovato esattamente un tale link negli esempi (non sono sicuro che funzionerà), quindi ho cancellato il messaggio precedente.

Idea fantastica. Può provare, anche se non sono sicuro.)))
 
Serhii Shevchuk:

Cos'è esattamente che non funziona nella tua query? Ci sono buoni esempi nella documentazione .

Non ho il tempo di capire il protocollo talker in questo momento, ed è inutile.

Per quanto riguarda il tuo link - se non puoi usare WebSocket - meglio non usare, risparmierai un sacco di tempo (se non hai esperienza con esso). Ci sono altre opzioni oltre a WebSocket.

ecco cosa non riesce https://www.mql5.com/ru/forum/342293/page12#comment_16633648

Il file viene creato, ma è vuoto. Il suo nome



è diverso dal file che viene scaricato dal comando curl



Si intuisce che il codice che hai scritto

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


non forma correttamente la sintassi di WebRequest.

Cioè, non riesce a far fare al WebRequest ciò che fa curl

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

Ecco cosa non funziona https://www.mql5.com/ru/forum/342293/page12#comment_16633648

.....

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

 
Se il file audio può essere riprodotto dalla cartella Files, dove è pre-registrato dall'EA, allora la soluzione del problema sarà realistica se il file audio risultante è coerente.
 
Nikolai Karetnikov:

Ecco cosa non funziona https://www.mql5.com/ru/forum/342293/page12#comment_16633648

Il file viene creato, ma è vuoto. Il suo nome



è diverso dal file scaricato dal comando curl



Questo suggerisce che il codice che hai scritto


non forma correttamente la sintassi di WebRequest.

Cioè non si può far fare a WebRequest quello che fa curl

e non lo farai :-)

perché si passano le opzioni del comando curl nelle intestazioni HTTP?

beh, almeno leggi qualche libro, guarda qualche esempio... altrimenti, ti scriveremo tutti un articolo