并再次进行dll和营销 - 页 13

 
nkaretnikov:

没有DLL,就不能从沙盒中播放wav文件?

来自帮助

例如,如果音频文件Demo.wav位于terminal_data_directory/MQL5/Files文件夹中,那么PlaySound()调用 应该这样写。

//------从terminal_data_directory\MQL5\Files\
PlaySound("\\Files\\Demo.wav")中播放声音文件Demo.wav

问题是playsound引擎本身有缺陷。它没有把声音结合起来,而是在新的命令到来时就停止播放前一个声音。

市场上有一个要求,即产品应该开箱即用,不依赖第三方模块。但也可以做一个激进的举动--在playsound crutch上做一个盒子的解决方案,如果你有一些模块,例如在kodobase中发布的,通过win引擎使用一个正常的解决方案。我理解它也可以做文本识别。

 
nkaretnikov:

我看你是个有经验的人,你能帮我写一个插座参考例子吗?

文件在这里https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-usingWebSocket

我理解的实例_ID 是GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB

当我在阅读文件时...

你的查询到底失败在哪里?文档 中有很好的例子。

我现在没有时间,而且这也是没用的东西。

关于你的链接--如果你不能使用WebSocket--最好不要使用,你会节省很多时间(如果你没有这方面的经验)。除了WebSocket,还有其他选择。

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

来自帮助

例如,如果Demo.wav声音文件位于terminal_data_directory/MQL5/Files文件夹中,PlaySound()调用 应该这样写。

//------从terminal_data_directory\MQL5\Files\
PlaySound("\\Files\\Demo.wav")中播放声音文件Demo.wav

问题是playsound引擎本身有缺陷。它没有把声音结合起来,而是在新的命令到来时就停止播放前一个声音。

市场要求产品应该开箱即用,不依赖第三方模块。但也有可能采取激进的做法--在playsound crutch上做一个盒子的解决方案,如果你有一些模块,例如kodobase,通过wind引擎使用一个正常的解决方案。

这正是我的观点!)

是的,2种方式。

第一种方式是PlaySound,根据发音速度进行暂停。但我遇到了这样的情况,在调用原生Windows TTS功能的阶段,当第二个短语进入繁忙流时,我们会得到一个运行时错误。因此,根据每分钟100个字符的发音速度,在课堂上有一个延迟。原则上,我们摆脱了这种情况。

方法2--用封闭的代码生成测试文件,用开放的代码用启用的DLL播放它

 
Serhii Shevchuk:

为什么要在文件夹里写一些不必要的东西?PlaySound可以从资源中播放,见链接 中的 "使用资源"。

P.S. 我自己没有试过,但既然文档中写了,就一定是可以的。

那么,计算机想要一个通用的解决方案,我们不需要将声音资源整合到专家顾问中。他想设计一个专家顾问和服务器之间的互动系统,首先创建一个NOW需要用户说的话的文本文件,服务器将其转换为.wav并发回给专家顾问。接下来,"专家顾问 "在不知情的情况下,写下了这个文件,以取代之前的文件(有服务器上的之前的配音),并调用PlaySound来播放新的配音。

这个计划不可能成功。
 
Реter Konow:
那么,TC希望有一个通用的解决方案,不需要事先将声音资源整合到专家顾问中。他想设计一个专家顾问和服务器之间的互动系统,首先创建一个NOW应该由用户说的话的文本文件,服务器将其转换为.wav并发回给专家顾问。接下来,"专家顾问 "在不知情的情况下,写下了这个文件,以取代之前的文件(有服务器上的之前的配音),并调用PlaySound来播放新的配音。

这样的计划不可能成功。

我的意思是使用ResourceCreate

从收到的数据中创建一个资源。然后用PlaySound播放。但我没有在例子中找到确切的这种联系(我不确定它是否有效)。 这就是为什么我删除了以前的信息。

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

我的意思是使用ResourceCreate

从收到的数据中创建一个资源。然后用PlaySound播放。但我在例子中没有找到这样的链接(不知道是否能用)。 所以我删除了以前的信息。

酷的想法。可以试试,虽然我不确定))))。
 
Serhii Shevchuk:

你的查询到底是什么原因不工作?文档 中有很好的例子。

我现在没有时间去搞清楚谈话者协议,而且也没有用。

关于你的链接--如果你不能使用WebSocket--最好不要使用,你会节省很多时间(如果没有这方面的经验)。除了WebSocket,还有其他选择。

以下是失败的原因 https://www.mql5.com/ru/forum/342293/page12#comment_16633648

文件已创建,但为空。其名称



与curl命令下载的文件不同。



这有点暗示着你写的代码

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


没有正确形成WebRequest的语法。

也就是说,它未能使WebRequest做Curl所做的事情

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

这里是不工作的地方 https://www.mql5.com/ru/forum/342293/page12#comment_16633648

.....

我可以看一下,但在明天晚上之前不行。如果你到时还没有自己解决。

 
如果声音文件可以从Files文件夹中回放,它是由EA预先录制的,那么如果产生的声音文件是连贯的,那么问题的解决将是现实的。
 
Nikolai Karetnikov:

这里是不工作的地方 https://www.mql5.com/ru/forum/342293/page12#comment_16633648

文件被创建,但它是空的。其名称



与curl命令下载的文件不同



这就暗示了你写的代码


没有正确形成WebRequest的语法。

也就是说,你不能让WebRequest做curl做的事。

而你不会 :-)

为什么要在HTTP头文件中传递curl命令选项?

好吧,至少读一些书,看一些例子......否则,我们真的会给你写一篇文章。