e novamente dll e mercado - página 13

 
nkaretnikov:

não é possível reproduzir um arquivo wav de uma caixa de areia sem uma DLL?

de ajuda

Por exemplo, se o arquivo de áudio Demo.wav estiver localizado na pasta Terminal_data_directory\MQL5\Files, então a chamada PlaySound() deve ser escrita desta forma:

//--- reproduzir arquivo de som Demo.wav do terminal_data_directory\MQL5 File
PlaySound("Files.wav");

O problema é que o próprio motor do playound é defeituoso. ele não combina os sons, mas deixa de tocar o anterior assim que chega um novo comando.

Há uma exigência no mercado de que o produto deve funcionar fora da caixa e não depender de módulos de terceiros. mas é possível fazer um movimento radical - fazer uma solução de caixa na muleta playound e se você tiver algum módulo, por exemplo no kodobase, usar uma solução normal através do motor eólico.

 
nkaretnikov:

Vejo que você é uma pessoa experiente, você pode me ajudar a escrever um exemplo de referência de soquete?

A documentação está aquihttps://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-usingWebSocket

Entendo que oexemplo_id é GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB

Enquanto leio o documento...

O que exatamente sua pergunta está falhando? Há bons exemplos na documentação.

Não tenho tempo agora, e é inútil.

Com relação ao seu link - se você não puder usar o WebSocket - é melhor não usar, você economizará muito tempo (se você não tiver experiência com ele). Existem outras opções além do WebSocket.

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

de ajuda

Por exemplo, se o arquivo de som Demo.wav estiver localizado na pasta Terminal_data_directory\MQL5\Files, a chamada PlaySound() deve ser escrita desta forma:

//--- reproduzir arquivo de som Demo.wav do terminal_data_directory\MQL5 File
PlaySound("Files.wav");

O problema é que o próprio motor do playound é defeituoso. ele não combina os sons, mas deixa de tocar o anterior assim que chega um novo comando.

o mercado exige que o produto funcione fora da caixa e não dependa de módulos de terceiros. mas é possível fazer um movimento radical - fazer uma solução de caixa na muleta playound e se você tiver algum módulo, por exemplo no kodobase, use uma solução normal através do motor de vento. que eu entendo que pode fazer reconhecimento de texto também.

é exatamente isso que eu quero dizer! )

Sim, de duas maneiras.

O primeiro caminho é o PlaySound e as pausas baseadas na velocidade de pronúncia. Mas encontrei isto e na fase de chamar os recursos nativos do Windows TTS, quando a segunda frase entra em um fluxo ocupado, obtemos um erro de tempo de execução. Portanto, há um atraso na classe com base na velocidade de pronúncia de 100 caracteres por minuto. Em princípio, saímos desta situação.

Método 2 - Gerar arquivo de teste por código fechado e reproduzi-lo por código aberto com DLLs habilitadas

 
Serhii Shevchuk:

Por que escrever algo na pasta desnecessariamente? PlaySound pode tocar a partir de recursos, veja "Utilizando Recursos" no link

P.S. Eu mesmo ainda não tentei, mas desde que está escrito na documentação, deve ser possível.

Bem, o computador quer uma solução universal onde não precisamos integrar recursos sólidos no Expert Advisor. Ele quer projetar um sistema de interação entre o Expert Advisor e o servidor, no qual o primeiro cria um arquivo de texto de palavras que AGORA precisa ser dito pelo usuário, e o servidor as converte para .wav e as envia de volta para o Expert Advisor. Em seguida, o consultor especializado, sem saber, escreve o arquivo no lugar do arquivo anterior (com a locução anterior do servidor) e chama o PlaySound para tocar a nova locução.

Este esquema não pode funcionar.
 
Реter Konow:
Bem, a TC quer uma solução universal, onde não há necessidade de integrar previamente recursos sólidos ao Expert Advisor. Ele quer projetar um sistema de interação entre o Expert Advisor e o servidor, no qual o primeiro cria um arquivo de texto de palavras que AGORA deve ser dito pelo usuário, e o servidor as converte para .wav e as envia de volta para o Expert Advisor. Em seguida, o consultor especializado, sem saber, escreve o arquivo no lugar do arquivo anterior (com a locução anterior do servidor) e chama o PlaySound para tocar a nova locução.

Tal esquema não pode funcionar.

Eu quis dizer usar ResourceCreate

Criar um recurso a partir dos dados recebidos. E depois tocar com PlaySound. Mas não encontrei exatamente essa conexão em exemplos (não tenho certeza de que funcionará). Por isso, apaguei a mensagem anterior.

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

Eu quis dizer usar ResourceCreate

Criar um recurso a partir dos dados recebidos. E depois tocar com PlaySound. Mas não encontrei exatamente tal link nos exemplos (não tenho certeza se vai funcionar). Por isso, apaguei a mensagem anterior.

Idéia legal. Pode tentar, embora não tenha certeza))))
 
Serhii Shevchuk:

O que exatamente sua pergunta não está funcionando? Há bons exemplos na documentação .

Eu não tenho tempo para descobrir o protocolo falador agora, e é inútil.

Com relação ao seu link - se você não puder usar o WebSocket - é melhor não usar, você economizará muito tempo (se não tiver experiência com ele). Existem outras opções além do WebSocket.

aqui está o que falha https://www.mql5.com/ru/forum/342293/page12#comment_16633648

O arquivo é criado, mas vazio. Seu nome



é diferente do arquivo que é baixado pelo comando curl



Dica que o código que você escreveu

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


não forma corretamente a sintaxe do WebRequest.

Ou seja, não faz com que o WebRequest faça o que faz o encaracolamento

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

aqui está o que não funciona https://www.mql5.com/ru/forum/342293/page12#comment_16633648


Posso olhar para ele, mas não antes de amanhã à noite. Se você ainda não tiver resolvido sozinho até lá.

 
Se o arquivo de som puder ser reproduzido da pasta Arquivos, onde é pré-gravado pela EA, então a solução do problema será realista se o arquivo de som resultante for coerente.
 
Nikolai Karetnikov:

aqui está o que não está funcionando https://www.mql5.com/ru/forum/342293/page12#comment_16633648

O arquivo é criado, mas está vazio. Seu nome



é diferente do arquivo baixado pelo comando curl



Este tipo de dicas de que o código que você escreveu


não forma a sintaxe WebRequest corretamente.

Isto é, você não pode fazer com que a WebRequest faça o que faz o encaracolamento

e você não vai :-)

por que você passa as opções de comando de ondulação nos cabeçalhos HTTP?

bem, pelo menos leia alguns livros, veja alguns exemplos... caso contrário, todos nós realmente escreveremos um artigo para você