그리고 다시 dll과 시장 - 페이지 31

 
Andrei Trukhanovich :

상관없다는 뜻입니다.

귀하의 코드는 (거의) 러시아어에서 작동합니다. 마음챙김 테스트

주의력은 분명히 잠들었습니다))

 
Реter Konow :

물론이죠!

그건 그렇고, TC에게 다음과 같이 알려야 합니다.

매우 이상한 항목입니다. 왜 그렇게 이상한 방식으로 포스트 배열의 크기를 지정합니까? StringToCharArray 함수 자체는 동적 배열에 대해 원하는 크기를 설정합니다. ArrayResize는 여기에서 중복되는 것 같습니다.

이게 다야, 분명해

MQL5 참조/데이터 변환/StringToCharArray

터미널 0도 대상 배열에 복사되지만 필요한 경우 문자열 크기에 맞게 동적 배열 의 크기를 늘릴 수 있습니다.

 
Nikolai Karetnikov :

이게 다야, 분명해

MQL5 참조/데이터 변환/StringToCharArray

터미널 0도 대상 배열에 복사되지만 필요한 경우 문자열 크기에 맞게 동적 배열 의 크기를 늘릴 수 있습니다.

물론 제가 코딩에 능한 사람은 아니지만 문자열을 char로 변환해주는 함수를 반복해서 호출해서 배열의 크기를 바꾸나요?)))

다음과 같이 가능합니다.

   int q = StringToCharArray (jsonbody,post, 0 ,- 1 , CP_UTF8 );
   ArrayResize (post, q - 1 );

그렇지 않으면 동일한 문자열의 변환을 두 번 호출합니다. 또한 두 번째는 첫 번째를 취소합니다.

 

또한 문서에서 "또는"이라는 단어에 주의하십시오.

【인】 복사할 배열 요소의 수입니다. 결과 문자열의 길이를 지정합니다. 기본값은 -1이며 이는 배열의 끝으로 복사 하거나 터미널 0을 만날 때까지를 의미합니다. 터미널 0도 대상 배열로 복사되지만 필요한 경우 동적 배열 의 크기를 늘릴 수 있습니다. 문자열의 크기. 동적 배열의 크기가 문자열의 길이보다 크면 배열의 크기는 줄어들지 않습니다.

이 터미널 0이 있는지 여부는 알 수 없지만 포스트 배열의 크기를 줄이므로 터미널 0이 없으면 후행 괄호를 잃을 수 있습니다.

역변환에 의해 마법으로 변환된 문자열의 무결성을 확인하는 것은 가치가 있습니다.

 
나는 관리했다! "하나, 둘"이라고 말했습니다)))
 
#include <JAson.mqh>
void OnStart()
  {

   char    result[];
   char    post[];
   string  url="https://texttospeech.googleapis.com/v1/text:synthesize?key=AIzaSyCaLxPh84wXpLkT-zOE04MlvHj3JhLXU0w";
   string  headers;
   string  result_headers;
   int     status;
   
   
   string jsonbody;
   headers = "Content-Type: application/json";


  jsonbody = "{\"input\":{\"text\":\"one, two\"},\"voice\":{\"languageCode\":\"en-gb\",\"name\":\"en-GB-Wavenet-B\"},\"audioConfig\":{\"audioEncoding\":\"LINEAR16\"}}";  
  jsonbody = "{\"input\":{\"text\":\"раз, два, три, четыре, пять, вышел зайчик погулять\"},\"voice\":{\"languageCode\":\"ru-RU\",\"name\":\"ru-RU-Wavenet-B\"},\"audioConfig\":{\"audioEncoding\":\"LINEAR16\"}}";

 
   
  int q = StringToCharArray(jsonbody,post,0,-1,CP_UTF8);
  ArrayResize(post, q - 1);
  status=WebRequest("POST",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)
        {
        CJAVal  CJasonResult;
        string lBase64String;
        char lBase64ResultArray[];
        char lBinaryDataArray[];
        char lkey[1];


        CJasonResult.Deserialize(result);
        lkey[0]=0;
        lBase64String = CJasonResult["audioContent"].ToStr();
        StringToCharArray(lBase64String,lBase64ResultArray,0,StringLen(lBase64String));
        CryptDecode(CRYPT_BASE64,lBase64ResultArray,lkey,lBinaryDataArray);
         //--- успешная загрузка
         PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
         PrintFormat("Заголовки сервера: %s",result_headers);
         //--- сохраняем данные в файл
         int filehandle=FileOpen("result.wav",FILE_WRITE|FILE_BIN);
         if(filehandle!=INVALID_HANDLE)
           {
           
            //--- сохраняем содержимое массива result[] в файл
            FileWriteArray(filehandle,lBinaryDataArray,0,ArraySize(result));

            //--- закрываем файл
            FileClose(filehandle);
            PlaySound("\\Files\\result.wav");
           }
         else
            Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         PrintFormat("Ошибка загрузки '%s', код %d",url,status,result_headers);
     }
  }
 
하나, 둘, 셋, 넷, 다섯, 토끼는 산책을 나갔습니다!))))
 
TS, 당신이 해냈습니다. 이것이 당신의 성공입니다! 코드의 작은 오류만 누락되었습니다. 나는 그것을 고쳤고 효과가 있었다!
 
이제 저는 고문을 위한 음성 컨트롤을 만들기 위해 STT(음성 텍스트 변환)를 마스터할 것을 제안합니다. 체계는 동일합니다. 우리는 일종의 클라우드 서비스(예: 동일한 Google)에 연결하고 WebRequest를 통해 변환된 음성에서 "라이브" 텍스트 스트림을 요청한 다음 구문 분석하여 기능에 보냅니다. 매우 혁신적입니다.
 
Реter Konow :
하나, 둘, 셋, 넷, 다섯, 토끼는 산책을 나갔습니다!))))

예 ! 작동!!! 시원한

JAson.mqh 가 필요합니다.

JP       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Файл успешно загружен, размер 264457 байт.
MQ       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Заголовки сервера: Content-Type: application/json; charset=UTF- 8
DH       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Vary: Origin
EN       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Vary: X-Origin
OD       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Vary: Referer
IO       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Content-Encoding: gzip
ID       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Date: Wed, 03 Jun 2020 02 : 05 : 48 GMT
MO       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Server: ESF
GE       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Cache-Control: private
EP       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        X-XSS-Protection: 0
MD       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        X-Frame-Options: SAMEORIGIN
CR       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        X-Content-Type-Options: nosniff
PP       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Alt-Svc: h3- 27 = ":443" ; ma= 2592000 ,h3- 25 = ":443" ; ma= 2592000 ,h3-T050= ":443" ; ma= 2592000 ,h3-Q050= ":443" ; ma= 2592000 ,h3-Q049= ":443" ; ma= 2592000 ,h3-Q048= ":443" ; ma= 2592000 ,h3-Q046= ":443" ; ma= 2592000 ,h3-Q043= ":443" ; ma= 2592000 ,quic= ":443" ; ma= 2592000 ; v= "46,43"
QL       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)        Transfer-Encoding: chunked
LI       0        05 : 05 : 49.668      22 WebRequest (GBPNZD,H2)
JSON Serialization and Deserialization (native MQL)
JSON Serialization and Deserialization (native MQL)
  • www.mql5.com
ForecastOscilator_HTF The ForecastOscilator indicator with the timeframe selection option available in the input parameters. Flat_HTF The Flat indicator with the timeframe selection option available in the input parameters. FX5_SelfAdjustingRSI_HTF The...
파일:
result.zip  126 kb