Multimedia, titulky, prevod textu na reč, prekladač, midi, proste všetko pre prácu aj pobavenie

18.09.2021 | 13:12 | Žumpa | bedňa

Tento blog voľne nadväzuje na blog Vytiahnutie nástrojov a hlasu z nahrávky Vytvoril som k tomu aj malý projekt, aby ste sa mohli ľahko zabaviť. Skriptom k dokonalosti chýba veľa, teda zbúchal som ich počas voľného času, bez toho že by som mal konkrétny zámer, proste kto si hraje nezlobí :-)

Inštalácia

Stiahneme si projekt:
git clone https://github.com/bedna-KU/Media_for_fun.git
vojdem do projektu:
cd Media_for_fun
spustíme inštaláciu:
source installation.sh

Stiahnutie textu k pesníčke

Texty v Angličtine nájdeme na stránke //www.azlyrics.com/ Na PyPi nájdeme aj knižnicu pre sťahovanie skladieb z AZlyrics bez nutnosti registrácie a obmedzení. Ja som vytoril skript get_lyrics.py pomocou ktorého si ľahko stiahne napríklad pesníčku, od Johna Lennona, Imagine.
    python3 get_lyrics.py "John Lennon" "Imagine"
Text nájdeme v súbore John_Lennon-Imagine.txt, správne ste uhádli, že súbor sa automaticky pomenuje podľa interpréta a skladby.

Automatické vytvorenie tituliek z textu a spevu

Toto je dosť problematická téma, tak spomeniem najväčší problém, ktorý môžete "za mňa vyriešiť", ale ako uvidíte aj tento skript vám bude občas fungovať :-) Problém s triafaním sa textu do spevu sa "dá" vyriešiť vydelením počtu písmen v texte a dĺžkou spevu v milisekundách, vocal_len / chars_count a tu získame koľko znakov vyslovíme za milisekundu, chars_per_ms. Vo finále toto proste nesedí, raz je spev rýchlejší, raz pomalší a Angličtina má ešte "zvláštnosti" vo výslovnosti, to sa dá možno zlepšiť pomocou knižníc na výslovnosť, no mne nepomohli. Proste momentálne sa triafa počet viet s počtom (neprázdnych) riadkov textu. (Poznámka: súbor vocals.wav sme si vytvorili, podľa minulého blogu) Pre vytvorenie tituliek z hlasu a textu použijeme skript:
    python3 media_and_text_to_srt.py vocals.wav John_Lennon-Imagine.txt  subtitles_en.srt
Vznikne nám súbor subtitle_en.srt.
1
0:00:14,800000 --> 0:00:16,900000
Imagine there's no heaven

2
0:00:21,200000 --> 0:00:23,500000
It's easy if you try

3
0:00:27,400000 --> 0:00:29,700000
No hell below us
Mno super, máme titulky a čo s nimi ďalej?

Vytvorenie umelého "spevu" k skladbe

"Spev" vytvoríme pomocou práve vytvoreného súboru subtitle_en.srt a vybratie EN jazyka príkazom:
    python3 make_gtts.py subtitles_en.srt en John_Lennon-Imagine_vocal_ai_en
Jéj to je paráda, (prvý spev začína po 14sekunde) poďme ďalej. Upozorňujem, že skript používa Google TTS, ale úplne anonymne, takže ste v bezpečí :-)

Mixovanie muziky a umelého "spevu"

Muziku máme v súbore accompaniment.wav (pozri minulý blog) a spojíme ho s umelým hlasom pomocou príkazu:
    python3 mix_audio.py accompaniment.wav John_Lennon-Imagine_vocal_ai_en.wav John_Lennon-Imagine_vocal_ai_en_complete.wav
>>>Ukážka<<<
Wow a teraz nám hrá pôvodná skladba s hlasom z umelej inteligencie, ak vás to zaujalo, ďalej to bude ešte zaujímavejšie :-)

Vyskúšame si preklad do Češtiny bez Google

Projektov na preklady textov je celkom dosť, niektoré aj čiastočne, alebo úplne open source. My si vyskúšame projekt z Univerzity Karla a to https://lindat.mff.cuni.cz/services/translation Vytvoril som na to skript translate_file.py. Ako prvý parameter mu predáme názov súboru ktorý chceme preložiť, druhý parameter je jazyk súboru, tretí parameter je názov súboru do ktorého sa preklad uloží a posledný parameter do akého jazyka. Preložíme si do Češtiny náš text k skladbe "Imagine".
    python3 translate_file.py John_Lennon-Imagine.txt en John_Lennon-Imagine_cs.txt cs
Představ si, že není nebe
Je to snadné, když se snažíte
Žádné peklo pod námi
Nad námi jen nebe
Představte si všechny ty lidi
Žít pro dnešek...
Teraz zopakujeme postup, Automatické vytvorenie tituliek z textu a spevu, Vytvorenie umelého "spevu" k skladbe a na záver Spojenie muziky a umelého "spevu".
python3 media_and_text_to_srt.py vocals.wav John_Lennon-Imagine_cs.txt subtitles_cs.srt
python3 make_gtts.py subtitles_cs.srt cs John_Lennon-Imagine_vocal_ai_cs
python3 mix_audio.py accompaniment.wav John_Lennon-Imagine_vocal_ai_cs.wav John_Lennon-Imagine_vocal_ai_cs_complete.wav

Sťahovanie midi

Midi súbory si môžeme sťahovať z webu https://bitmidi.com Ja som na stiahnutie midi súborov vytvoril skript get_midi.py, pre stiahnutie midi ku skladbe "Imagine" napíšeme:
python3 get_midi.py John Lennon Imagine
a skladbu nájdeme v súbore John Lennon - Imagine.mid. Na prehranie midi súboru môže použiť Timidity, alebo VLC. Na prevod midi to wav môžeme použiť príkaz:
timidity John\ Lennon\ -\ Imagine.mid -Ow -o John_Lennon-Imagine_from_midi.wav
Teraz môžeme zmixovať umelú muziku s umelým hlasom :-)
python3 mix_audio.py John_Lennon-Imagine_from_midi.wav John_Lennon-Imagine_vocal_ai_cs.wav John_Lennon-Imagine_vocal_ai_cs_midi_complete.wav
>>>Ukážka<<<

Vytvorenie videa z obrázku a audia

Keď máme obrázok John_Lennon_Yoko_Ono.jpg a audio John_Lennon-Imagine_vocal_ai_cs_midi_complete.wav nižšie uvedeným príkazom si vytvoríme video out.mp4
ffmpeg -loop 1 -i John_Lennon_Yoko_Ono.jpg -i John_Lennon-Imagine_vocal_ai_cs_midi_complete.wav -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest out.mp4

Pridanie titulkov do videa

Do videa out.mp4 pridáme anglické titulky subtitles_en.srt a české titulky subtitles_cs.srt. Použijeme na to príkaz:
mkvmerge -o out.mkv out.mp4 --language 0:en subtitles_en.srt --language 0:cs subtitles_cs.srt
Ja používam prehrávač mpv (predtým známy ako MPlayer), titulky v ňom prepíname klávesou J.
>>>Ukážka<<<

Záver

Ak máte otázky, pripomienky, alebo vylepšenia, sem s nimi :-)

Prílohy



    • RE: Multimedia, titulky, prevod textu na reč, prekladač, midi, proste všetko pre prácu aj pobavenie 20.09.2021 | 12:05
      Avatar vxmery Mint 21.3 Cinnamon  Používateľ

      Ty asi nemáš čas "zlobit". Pekne si sa vyhral. Tá fotečka Yoko&John je štýlová.