Google Cloud Console TTS. Prevod textu na reč cez API na Linuxe
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.
- Odkaz na AI asistenta https://console.cloud.google.com/gemini
- Podmienka je si nainštalovať program bez grafického rozhrania s názvom gcloud CLI. Návod na inštaláciu Odkaz tu. Umožňujú dokonca aj snap verziu (odkaz tu) ideálne pre distribúcie založené na Ubuntu
- Ďalej do terminálu na Linuxe treba zadať nasledovné príkazy:
gcloud init
gcloud auth login
gcloud config set project [VÁŠ_PROJECT_ID]
- pri prvej konfigurácii a prvom prihlásení v termináli sa vám otvorí prehliadač v ktorom vás to vyzve aby ste odsúhlasili že súhlasíte s prepojením vášho úctu Google Cloud Console s terminálom
- Project ID nájdete na adrese https://console.cloud.google.com/welcome
- API funguje na báze .json súborov. Do .json súboru vložíte zadanie pre Google Cloud a odošlete pomocou terminálu. Súbor vytvoríte jednoducho tak, že kód vložíte do textového editora a následne dáte názov súboru nazov.json. Súbor môžete uložiť napríklad na adresu /home/uzivatel/
- potom ako cez terminál odošlete .json súbor, terminál vygeneruje iný .json, sa uloží do počítača (nie na Cloud Servery). Otvorte si ho v textovom editore, aby ste videli či prebehlo všetko v poriadku alebo sú tam nejaké chybové hlášky
- Google Cloud Console ukladá dáta do sekcie zvanej Bucket. (sekciu Bucket môžete nájsť aj pomocou vyhľadávača v hornej časti rozhrania). Ukladajú sa tam vstupné a výstupné súbory. Môžete tam napríklad vložiť audio súbor pre účel prevodu reči na text, alebo naopak tam uloží audio súbor s prevodu textu na reč TTS
- AI tiež nie je dokonalá ako prvý návod mi uviedla taký ktorý bol zbytočne zložitý a podporoval dĺžku len pár viet. Potom ako som upozornil na chybové hlášky poskytla mi lepšie návody a príkazy, ktoré boli jednoduchšie a podporovali aj dlhšie texty
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:
- Cloud Shell nemá priame spojenie s bucketom ale pracuje v osobitnom prostredí, kde sa súbory správajúa ko dočasné. Je nevyhnutné osobitnými príkazmi premiestňovať súbory medzi Bucketom a Cloud Shell
- výstupné json súbory, ktoré môžu zahŕňať chybové hlásenia sa otvárajú komplikovanejšie osobitnými príkazmi
Návod
Doplnenie potrebných povolení, postup:
https://console.developers.google.com/iam-admin/iam/project
- Kliknúť na Ceruzka
- Add another role
- Service Usage Consumer
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/

Pre pridávanie komentárov sa musíte prihlásiť.