Google Cloud Console TTS. Prevod textu na reč cez API na Linuxe

19.11 | 22:14 | Blog | Slavomír

Nadväzujem na predchádzajúci článok o službách Google Cloud Console (odkaz tu).

Prečo sa zaoberať API keď existuje aj grafické rozhranie Vertex AI? Nevýhoda Vertex AI (odkaz tu) je to, že podporuje maximálne len 500 znakov čo je asi tak na štyri vety. Praktické využitie takmer žiadne.

Riešenie je API. Je navyše cenovo výhodné. 4 milióny znakov mesačne je zadarmo.

Je zaujímavé, že ja ako človek s minimálnymi programátorskými skúsenosťami / schopnosťami som zvládol API TTS relatívne ľahko. Veľkou pomocou mi bola zabudovaná AI, ktorá dobre pracuje aj v slovenčine.

Jedná sa o prácu v termináli. Ak sa vyskytnú akékoľvek chybové hlášky, treba ich poslať AI a tá sa opraví a pomôže s tým čo treba zmeniť. Umenie úspechu tiež spočíva v správne položených otázkach.

  

Obsah .json súboru. FLAC audio formát nepodporuje, tak som tam dal WAV formát. „LINEAR16“ je podkategória WAV. Názov súboru request.json

{ 
"parent": "projects/nazov_project_ID/locations/global", 
"audioConfig": { 
"audioEncoding": "LINEAR16", 
"sampleRateHertz": 24000 
}, 
"input": { 
"text": "Tu vložte váš dlhý text, ktorý môže mať až do 1MB znakov. Toto API je určené pre dlhé texty, ktoré prekračujú 5000 bajtov. Výstupný súbor bude uložený priamo do Google Cloud Storage bucketu, ktorý ste si vytvorili." 
}, 
"voice": { 
"languageCode": "sk-SK", 
"name": "sk-SK-Chirp3-HD-Alnilam", 
"ssmlGender": "MALE" 
}, 
"output_gcs_uri": "gs://nazov_bucketu/dlhy_text_chirp3-male.wav" 
}

 

Do terminálu zadaný vstupný a výstupný .json súbor. Do terminálu zadajte nasledovné

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-H "x-goog-user-project: nazov_project_ID" \
-d @request.json \
"https://texttospeech.googleapis.com/v1beta1/projects/nazov_project_ID/locations/global:synthesizeLongAudio" \
-o long_audio_response.json

 

Vyžiadanie zoznamu hlasov cez terminál

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-H "x-goog-user-project: nazov_project_ID" \
"https://texttospeech.googleapis.com/v1/voices" \
-o voices.json

 

TTS cez Shell vo webovom prehliadači

Shell nájdete pravo hore.

Nie je to ale z ďaleka tak jednoduché ako to robiť cez terminál v Linux PC cez gcloud CLI. Preto tento potup menej odporúčam.

Nevýhody metódy Shell vo webovom prehliadači v porovnaní gcloud CLI v Linux PC:

Návod

Doplnenie potrebných povolení, postup:

https://console.developers.google.com/iam-admin/iam/project

Vložte svoj text: Skopírujte a vložte do tohto súboru váš text

nano long_text.txt

Uložte súbor ( Ctrl+X , Y , Enter ).

 

Vytvorte súbor long_audio_template.json :

nano long_audio_template.json

 

Vložiť doň tento obsah

{ 
"parent": "projects/Vas_Project_ID_nazov/locations/global", 
"audioConfig": { 
"audioEncoding": "LINEAR16", 
"sampleRateHertz": 24000 
}, 
"input": { 
"text": null 
}, 
"voice": { 
"languageCode": "sk-SK", 
"name": "sk-SK-Chirp3-HD-Alnilam", 
"ssmlGender": "MALE" 
}, 
"output_gcs_uri": "gs://Vas_Nazov_Bucketu/TTS_audio.wav" 
}

Uložte súbor json súbor ( Ctrl+X , Y , Enter ).

**************

Vložte do terminála

TEXT_CONTENT=$(cat long_text.txt)

 

Vložte do terminála

jq --arg text "$TEXT_CONTENT" '.input.text = $text' long_audio_template.json > final_request.json

 

Vložte do terminála

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-H "x-goog-user-project: Vas_Project_ID_nazov" \
-d @final_request.json \
"https://texttospeech.googleapis.com/v1beta1/projects/Vas_Project_ID_nazov/locations/global:synthesizeLongAudio" \
-o long_audio_operation.json

 

Teraz máte TTS WAV súbor v buckete

****************************************************************

Doplňujúce funkcie

 

Zobrazenie JSON súboru

cat long_audio_operation.json

 

Dokonca je možné v Cloud Shell konvertovať audio súbory, napríklad z WAV na FLAC:

sudo apt install ffmpeg

 

WAV je v Buckete, musíte ho najprv skopírovať do Cloud Shellu pomocou príkazu gsutil cp.

Skopírujte WAV súbor z Bucketu do Cloud Shellu:

gsutil cp gs://vas-bucket-nazov/TTS_audio.wav .

 

Skontrolujte, či je súbor v Cloud Shelli:

ls -l TTS_audio.wav

 

Spustite konverziu FFmpeg:

ffmpeg -i TTS_audio.wav TTS_audio.flac

 

Výsledný FLAC súbor nahrajte späť do Bucketu, použite príkaz gsutil cp znova:

gsutil cp TTS_audio.flac gs://vas-bucket-nazov/
 

Prílohy