ve yine dll ve market - sayfa 27

[Silindi]  
Alexsandr San :

işte ilk çalıştırma - Rusça metin içeren bir metin dosyası yüklendi, bir tür karalama - ama var, dosyayı .wav'a kaydedin


kopyalandı yapıştırıldı - bir .wav dosyası alındı Arşivde, .wav ile yazılmış olarak kaydedildi

anlık görüntü2

Dosyalar:
 
Nikolai Karetnikov :

peki, Google hakkında

Akışı Base64'te veriyorlar. Onu mp3'e dönüştürmeyi başardım ama LINEAR16 ile değil.

LINEAR16, wav'a dönüştürülmelidir

LINEAR16 olarak döndürülen ses içeriği ayrıca bir WAV başlığı içerir.
Method: text.synthesize  |  Cloud Text-to-Speech  |  Google Cloud
Method: text.synthesize  |  Cloud Text-to-Speech  |  Google Cloud
  • cloud.google.com
Synthesizes speech synchronously: receive results after all text input has been processed. Request body The request body contains data with the following structure: Fields Response body If successful, the response body contains data with the following structure: The message returned to the client by the method. Fields The audio data bytes...
 

uzmanlar için soru

Bir Google hizmetini kodla çağırma

Google

1. sadece bir başlık

2. anahtar url yoluyla iletilir

3. Motoru bir json dosyası üzerinden yönetiyoruz.

curl'de bu böyle

curl -X POST -H "Content-Type: application/json" -d @request.json https: //texttospeech.googleapis.com/v1/text:synthesize?key=AIzaSyCaLxPh84wXpLkT-zOE04MlvHj3JhLXU0w

request.json

{ "input" :{ "text" : "M" }, "voice" :{ "languageCode" : "en-gb" }, "audioConfig" :{ "audioEncoding" : "LINEAR16" }}

curl doğru yanıt alır



Şimdi WebRequest kullanarak uyguluyoruz


 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart ()
  {

   char     post[],result[];
   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" ;
//---

// original json file
//{"input":{"text":"M"},"voice":{"languageCode":"en-gb"},"audioConfig":{"audioEncoding":"LINEAR16"}}
////

  jsonbody = "{\"input\":{\"text\":\"M\"},\"voice\":{\"languageCode\":\"en-gb\"},\"audioConfig\":{\"audioEncoding\":\"LINEAR16\"}}" ;
   StringToCharArray (jsonbody,post);
  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 )
        {
         //--- успешная загрузка
         PrintFormat ( "Файл успешно загружен, размер %d байт." , ArraySize (result));
         PrintFormat ( "Заголовки сервера: %s" ,result_headers);
         //--- сохраняем данные в файл
         int filehandle= FileOpen ( "result.wav" , FILE_WRITE | FILE_BIN );
         if (filehandle!= INVALID_HANDLE )
           {
             //--- сохраняем содержимое массива result[] в файл
             FileWriteArray (filehandle,result, 0 , ArraySize (result));
             //--- закрываем файл
             FileClose (filehandle);
             PlaySound ( "\\Files\\test.mp3" );
           }
         else
             Print ( "Ошибка в FileOpen. Код ошибки =" , GetLastError ());
        }
       else
         PrintFormat ( "Ошибка загрузки '%s', код %d" ,url,status);
     }
  }

Ama cevap geliyor

2020.06.02 11:52:15.887 GoogleVoice (EURUSD,H1) Ошибка загрузки 'https://texttospeech.googleapis.com/v1/text:synthesize?key=AIzaSyCaLxPh84wXpLkT-zOE04MlvHj3JhLXU0w', код 400

sunucu, json değişkeninde kendisine gönderilen kısa diziyi anlamamış gibi

Bir diziyi yanlış mı oluşturuyorum, yine de ne var?

 
TheXpert :

LINEAR16, wav'a dönüştürülmelidir

meli! ) ve verilir.

Sebep -

fazla karakterleri kaldırır ve temizlenmiş dizeyi Base64 yardımcı programına "beslerseniz", PlaySound -okunabilir bir wav dosyası alırsınız

 
Nikolai Karetnikov :

meli! ) ve verilir.

Sebep -

fazla karakterleri kaldırır ve temizlenmiş dizeyi Base64 yardımcı programına "beslerseniz", PlaySound tarafından okunabilir bir wav dosyası alırsınız

bu json :-) lütfen, değeri audioContent anahtarından almanız gerekiyor

[Silindi]  
Nikolai Karetnikov :


Okuyamayabilirsiniz ve bunun için

         int filehandle= FileOpen ( " result.wav " , FILE_WRITE | FILE_BIN );
         if (filehandle!= INVALID_HANDLE )
           {
             //--- сохраняем содержимое массива result[] в файл
             FileWriteArray (filehandle,result, 0 , ArraySize (result));
             //--- закрываем файл
             FileClose (filehandle);
             PlaySound ( "\\Files\\ test.mp3 " );
farklı dosyalar al
 
Alexsandr San :

Okuyamayabilirsiniz ve bunun için

farklı dosyalar al

Programın yürütülmesi WebRequest aşamasında kesintiye uğradı, dosyalar ulaşmıyor)))

 
Maxim Kuznetsov :

bu json :-) lütfen, değeri audioContent anahtarından almanız gerekiyor

ah, aynen! Teşekkürler!! )))

 
Nikolai Karetnikov :

Ama cevap geliyor

sunucu, json değişkeninde kendisine gönderilen kısa diziyi anlamamış gibi

Bir diziyi yanlış mı oluşturuyorum, yine de ne var?

sorun, sonlandırılan boş karakterdir.

 void OnStart ()
  {

   char     post[],result[];
   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" ;
//---

// original json file
//{"input":{"text":"M"},"voice":{"languageCode":"en-gb"},"audioConfig":{"audioEncoding":"LINEAR16"}}
////

  jsonbody = "{\"input\":{\"text\":\"M\"},\"voice\":{\"languageCode\":\"en-gb\"},\"audioConfig\":{\"audioEncoding\":\"LINEAR16\"}}" ;
   ArrayResize (post, StringToCharArray (jsonbody,post) - 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 )
        {
         //--- успешная загрузка
         PrintFormat ( "Файл успешно загружен, размер %d байт." , ArraySize (result));
         PrintFormat ( "Заголовки сервера: %s" ,result_headers);
         //--- сохраняем данные в файл
         int filehandle= FileOpen ( "result.wav" , FILE_WRITE | FILE_BIN );
         if (filehandle!= INVALID_HANDLE )
           {
             //--- сохраняем содержимое массива result[] в файл
             FileWriteArray (filehandle,result, 0 , ArraySize (result));
             //--- закрываем файл
             FileClose (filehandle);
             PlaySound ( "\\Files\\test.mp3" );
           }
         else
             Print ( "Ошибка в FileOpen. Код ошибки =" , GetLastError ());
        }
       else
      {
         PrintFormat ( "Ошибка загрузки '%s', код %d" ,url,status);
         Print ( "result: " , CharArrayToString (result));
      }
     }
  }

ve webrequest'ten bir hata alırsanız, sonuç parametresinde birçok ek bilgi vardır.

Örneğin:

2020.06.02 12:29:27.935 google_speech (USDRUB,M30)      Ошибка загрузки 'https://texttospeech.googleapis.com/v1/text:synthesize?key=AIzaSyCaLxPh84wXpLkT-zOE04MlvHj3JhLXU0w', код 400
2020.06.02 12:29:27.935 google_speech (USDRUB,M30)      result: {
2020.06.02 12:29:27.935 google_speech (USDRUB,M30)        "error": {
2020.06.02 12:29:27.935 google_speech (USDRUB,M30)          "code": 400,
2020.06.02 12:29:27.935 google_speech (USDRUB,M30)          "message": "Invalid JSON payload received. Parsing terminated before end of input.\ncoding\":\"LINEAR16\"}}\u0000\n                    ^",
2020.06.02 12:29:27.935 google_speech (USDRUB,M30)          "status": "INVALID_ARGUMENT"
2020.06.02 12:29:27.935 google_speech (USDRUB,M30)        }
2020.06.02 12:29:27.935 google_speech (USDRUB,M30)      }
 
TheXpert :

sorun, sonlandırılan boş karakterdir.

ve webrequest'ten bir hata alırsanız, sonuç parametresinde birçok ek bilgi vardır.

Örneğin:

Teşekkür ederim! )