Multimedia, titulky, prevod textu na reč, prekladač, midi, proste všetko pre prácu aj pobavenie
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.gitvojdem do projektu:
cd Media_for_funspustí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.srtVznikne 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 usMno 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_enJé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 Imaginea 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.wavTeraz 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.mp4ffmpeg -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.srtJa 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
- John_Lennon-Imagine_vocal_ai_en_complete.mp3 (3.0 MB)
- John_Lennon-Imagine_vocal_ai_cs_midi_complete.mp3 (3.1 MB)
Pre pridávanie komentárov sa musíte prihlásiť.
Ty asi nemáš čas "zlobit". Pekne si sa vyhral. Tá fotečka Yoko&John je štýlová.