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

 
Renat Fatkhullin:

发现了为什么不接受来自IBM服务的分块响应。

他们在Transfer-Encoding响应头中的格式不正确,他们在那里放了一个双空格而不是一个单空格。协议允许这样做,但我们的解析器没有考虑到这一点。

这就是为什么我们误读了分块/分片流,等不及它完成。


在下一个测试版中会有一个修复。最有可能是今天。


我们早在2002年左右就在MetaQuotes平台上推出了嵌入式Text2Speech服务,但由于实施不力而被踢出。最有可能的是,它将被添加到终端和MQL5中,作为一个标准功能。

这就是男人的方式!

我对可可太兴奋了 :)

 
Nikolai Karetnikov:

这很有男子气概!

我对可可有点兴奋 :)

但是,对你来说,这个问题仍将停留在标准的 "文本到语音 "的整合上。要么为你的EA的所有用户提供10,000个字符,要么是IBM的付费计划,0.02美元/1000字。那么该如何处理这篇文章呢?如果这不是一个秘密,你会怎么做?

 

这里有一个工作脚本。

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   char    post[],result[];
   string  url="https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST";
   string  headers="Authorization: Basic YXBpa2V5OkdSMWJiM3pWTXM5ZmNOS0w2cEE5LTV6ajlwdFdsaUN1NmVoOW91cFVucFpC\r\n";
   string  result_headers;
   int     status;
//---
   status=WebRequest("GET",url,headers,100000,post,result,result_headers);
   if(status==-1)
     {
      Print("Ошибка в WebRequest. Код ошибки  =",GetLastError());
      //---
      StringSetLength(url,StringFind(url,"/",8));
      MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
     }
   else
     {
      if(status==200)
        {
         //--- успешная загрузка
         PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
         PrintFormat("Заголовки сервера: %s",result_headers);
         //--- сохраняем данные в файл
         int filehandle=FileOpen("result.ogg",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,status);
     }
  }
 
Renat Fatkhullin:

这里有一个工作脚本。

脚本加载一些文件result.ogg。

唯一不清楚的是,它是什么样的文件?

我试着用不同的格式。

快照1

快照2

 
Alexsandr San:

脚本加载一些文件result.ogg。

唯一不清楚的是,这个文件是什么?

我试着用不同的格式。


而我这里是两个英文单词的纯文本(Traders Forum.txt)。

图片来源

快照3

附加的文件:
 

我明白,可以发送(file.txt)并接收(file.wav)格式的信息。

------------------------------------------

这里是WebRequest.wav 中的WebRequest.mq5脚本。

射击4

图片5

附加的文件:
WebRequest.zip  5806 kb
 
Alexsandr San:
我理解,你可以以某种方式安排发送(file.txt),并以(file.wav)格式接收。

目前,这并不具有很高的成本效益。也就是说,IBM的服务所发送的文件还不能被WebRequest 所读取(应该很快就能修复),但即使是读取了,免费使用文本转语音 服务也仅限于每月10000个字符也就是说,他们会转换一个小段落,仅此而已。有一个付费选项(这是为那些真正需要的人准备的)。也许如果你找到一个没有限制的免费文本配音服务,你可以尝试重新编造。但我不认为有任何...

在终端和语言中 引入文字转语音让 我们感到放心,这对人工智能开发者来说无疑是件好事,但是,这需要时间我认为,现在最好是等待......

 
Alexsandr San:

脚本加载一些结果.ogg文件。

Beta 2472已经可用,它可以与IBM的服务一起使用。

这项服务不输出wav格式的文件,而是输出ogg格式的文件。

 
谷歌可以每月免费提供WAV和400万字符(或100万字符的网络处理)。
 
Renat Fatkhullin:

这里有一个工作脚本。

是的!)