A megoldás végül úgy készült el, hogy továbbfejlesztettem egy githubon talált hasonló kezdeményezést (innen is köszönet az eredeti feltöltőnek!), ami bár remek kezdeményezés, de mégsem tetszett benne, hogy az espeak felolvasót használja, ami jól hallhatóan "géphangon" beszél, illetve a lefordított szövegek néhol pontatlanok voltak vagy helyesírási hibát, elgépelést tartalmaztak, ami a felolvasott szövegekben is értelemszerűen gondot okozott.
A projektből készítettem egy saját forkot, amiben javítottam a fentebb említett problémákat, elérhető itt:
https://gist.github.com/kissg1988/7732582
Q: Ez a megoldás miben különbözik az eredeti projekttől?
A: A lefordított szövegekben javítottam a helyesírási hibákat és elgépeléseket, illetve kiegészítettem a CSV fájlt néhány további szöveggel. A leglényegesebb különbség mégis az, hogy a szkript az eSpeak helyett a Google TTS-t használja a felolvasáshoz, ami nagyságrendekkel természetesebben szól.
Q: Mit tartalmaz a fordítás?
A: A fordítás tartalmazza a leggyakrabban használt funkciókat (tesztelve Elastix 2.4-en és a benne lévő asterisk 11.6-tal), tételesen:
- Számok és betűk kiejtése
- Alapszintű híváskezelés (szám nem kapcsolható, nincs szabad vonal, mellék kapcsolása)
- Telefonkönyv (Elastix-féle [411])
- Visszhangteszt
- Follow-me funkció
- Konferenciahívás
- Diktálás
- Queue-kezelés
- Hangposta
- Legutóbbi hívás adatai
- Saját mellék bemondása
- Hívásvárakoztatás ki/bekapcsolása
- Tiltólista-kezelés
- Elfoglalt üzemmód (do-not-disturb)
- Pontos idő
Q: Kinek jó ez?
A: Azoknak, akik szeretnék, ha az otthoni vagy kisvállalati Asterisk-központjuk magyarul beszélne, ugyanakkor nem szeretnének pénzt áldozni erre, és az ingyenességért cserébe elfogadják, hogy a hangüzenetek néhol nem hangzanak teljesen természetesen.
Q: Mi kell hozzá?
A: A hangfájlok legenerálásához az alábbiakra van szükség:
- Python 2.6 vagy újabb
- bash
- sox
- lame
Q: Zavaró a felolvasó hangsúlyozása, és a szavak egy részét furcsán/természetellenesen ejti ki. Nem lehetne ezen finomítani?
A: Legfeljebb csak egy hajszálnyival. Sajnos nem tartunk még ott, hogy egy szoftver egy anyanyelvű beszélő hanglejtésével és kiejtésével legyen képes beszélni (bár néhány TTS motor elég jól megközelítette már ezt). A szövegeket tartalmazó CSV fájlban megfigyelhető, hogy bizonyos helyeken hiányoznak a szóközök, illetve hibás helyesírással szerepel néhány szó. Ez szándékos, és épp azért van így, hogy a TTS motor megfelelően hangsúlyozva olvassa fel a szöveget - vagyis ez már egy optimalizált megoldás, a CSV-ben lévő szövegek eleve a Google TTS-re lettek kihegyezve.
Q: A pontos idő bemondása nem megfelelő formátumú. Hogyan lehet ezt korrigálni?
A: A javításhoz csak egy apró módosítás szükséges. Az alábbi sort:
exten => *60,n(hr24format),SayUnixTime(${FutureTime},,kM 'and' S 'seconds')
erre kell lecserélni:
exten => *60,n(hr24format),SayUnixTime(${FutureTime},,k 'hours' M 'minutes' S 'seconds')
A cserét érdemes az "extensions_override_freepbx.conf" fájlban megejteni az eredeti szkriptről készített másolaton, ezzel elkerülve, hogy frissítéskor esetleg felülíródjon a módosítás.
Q: Nem szeretném magamnak legenerálni a hangokat. Le lehet tölteni valahonnan a hangkészletet használatra kész állapotban?
A: Ha megkeresel privátban, szívesen elküldöm az általam generált hangkészletet (~2 MB tömörítve).
A kódot használjátok fel bátran tetszőleges célra, kérdéseket/visszajelzéseket szívesen veszek privátban vagy kommentekben.
PS: folyamatosan tesztelem és javítgatom az egyes funkciókat, így érdemes megvárni, amíg lehetőleg minden funkció tesztelve lesz. Várható egy (opcionális) patch is, ami javítja a nyelvtani különbségekből adódó hibákat. Úgy tűnik, a szkriptek magyarításához sajnos bele kellene nyúlni az asterisk forráskódjába, így egyelőre együtt kell élni a nyelvtani eltérésekből fakadó furcsaságokkal (esetleg megpróbálom máshogy megoldani).
frissítés (2013-12-03): új CSV feltöltve, hangposta szolgáltatás tesztelve, betűző szavak cseréje a magyar megfelelőkre
frissítés (2013-12-04): kisebb hibajavítások a CSV-ben, hiányzó promptok felvéve, asterisk konferenciahívás tesztelve
frissítés (2013-12-08): CSV frissítve, minden funkció tesztelve - a magyarítás ezennel elkészült. :)
frissítés (2014-02-27): kisebb javítások a CSV-ben és a hangokat generáló szkriptben, tesztelve AsteriskNOW 3-mal, ezzel is remekül működik a fordítás
- gergelykiss blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Nagyon danke látatlanban (izé, hallatlanban) is.
- A hozzászóláshoz be kell jelentkezni
+1
--
http://csuhai.hu
- A hozzászóláshoz be kell jelentkezni
köszönik
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
- A hozzászóláshoz be kell jelentkezni
Belegondolva, hogy néhány cégnél ugyanaz, az enyhén (ugyanakkor borzasztó idegesítően) beszédhibás csaj mondja be az automata szövegét, akár még jó is lehet.
- A hozzászóláshoz be kell jelentkezni
Az a megoldás miért nem jó, hogy egy este bent maradsz és a titkárnő felolvassa a szöveget amit felveszel?
Kicsit munkásabb, de természetesen szól.
Mondjuk tesztelése ez tökéletes, kösz.
- A hozzászóláshoz be kell jelentkezni
Mi annó próbáltuk így, de 1 percnyi hanganyag 10-20 percnyi munkával jár (zajszűrés, bakizások, utómunka, stb.). Napközben meg esélytelen kivitelezni, este meg nem biztos, hogy ráért a kollegina maradni. A Google TTS valóban a legjobb ingyenes megoldás és szinte akármilyen nyelven működik (az angolt és a németet próbáltam).
- A hozzászóláshoz be kell jelentkezni
Én a zajszűrést megoldottam Asterisk felvétellel - egész korrekt minőségű lett a beszéd.
Ellenben a bakizás, "nem tetszik", ill. utómunka valóban hosszadalmas tud lenni - no meg a zajtalan környezet sokszor nem egyszerű...
Ez a Google TTS érdekes dolog, kipróbáltam.
Bár Google-nél kérdéses, mikor szünteti meg - úgy általában bármit is... :S
Ezen felül mindent át kell passzírozni felé a neten.
Egyébként eddig a legjobb hangzást a SpeakBoard nevű programtól hallottam - kár, hogy Windowsos és kereskedelmi termék...
- A hozzászóláshoz be kell jelentkezni
Nem terhelném ilyesmivel a recepciósunkat. Én még rá tudnám venni magam, de tőle nem várhatom el, hogy túlórázzon ilyesmi miatt (multicégről beszélünk).
Másfelől: abszolút nem csak tesztelésre jó ez. A szkript 20%-kal felgyorsítja a beszéd sebességét (hangmagasságot nem!), ami lényegesen "élvezhetőbbé" teszi az egészet.
Kicsit biztosan lehet még csiszolgatni rajta a hangsúlyozás manipulálásával, de szerintem SOHO felhasználásra így is tökéletes.
- A hozzászóláshoz be kell jelentkezni
(Csak egy apró megjegyzés, nekem a futtatás során a sox minden alkalommal nyafog, hogy a resample elavult:
sox WARN sox: effect `resample' is deprecated; see sox(1) for an alternative
A nagyobb baj, hogy a doksiban egyáltalán nem találom a resample szócskát.)
- A hozzászóláshoz be kell jelentkezni
Köszi, nálam is kiírja (CentOS 6.4), de nem zavartatom magam egyelőre, mivel még működik a funkció. :)
- A hozzászóláshoz be kell jelentkezni
http://linux.die.net/man/1/sox
Deprecated effects címszó alatt?
- A hozzászóláshoz be kell jelentkezni
Hm, nem tudom az előbb mit rontottam el, de most én is megtaláltam. És ott a megoldás, hogy helyette már a rate kell helyette, igaz valami más opciókat használ :-)
- A hozzászóláshoz be kell jelentkezni
Pedig a Pléh Macára a legjobb megoldás... (Az elnevezés az egykori MATÁV tudakozó hangbemondására egy taxistól származik)
- A hozzászóláshoz be kell jelentkezni
könyvjelző
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
bookmark
- A hozzászóláshoz be kell jelentkezni
A betuzesnel a Charlie felrevezeto is lehet, mert ugye magyarul van c es cs hangunk is. Nyilvan egy informatikai beallitottsagu embernek ez nem tunik fel, de szeles koru felhasznalasnal akadhatnak problemak. Probalj meg valami C betus szot talalni helyette. Hasonlo a gond a Sierra-val is. A janki (tul azon, hogy borzalmas kiejtes) szinten felrevezeto, mert magyarul azt a szot "jenki"-nek mondjuk, es pontos J-vel irjuk le. Ide idealis megoldas a Yamaha, ami eleg szeles korben ismert szo ahhoz, hogy mindenki tudja rola: ipszilonnal kezdodik.
PS: pontosan tudom, hogy ez milyen ABC. Viszont ez a projekt szandekai szerint minel szelesebb korben akar terjedni, ezert fontos, hogy az angol es a magyar kornyezet kozti kulonbseg minel kevesbe latszodjon. A betuzesnel nem a pontos, szoveghu forditas a cel, hanem hogy hasznos legyen barki szamara.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Ez pont nem tőlem származik, csak megörököltem a leszármaztatott projektből, de köszönöm az észrevételt!
A klasszikus betűzés (Aladár, Béla, Cecil, Dénes...) nem lenne jó ide?
- A hozzászóláshoz be kell jelentkezni
Betűzésnél minden esetben "illendő" az adott nyelvnek megfelelően eljárni, tehát a alfa-bravo...-zulu angol nyelvi környezetbe való, magyarba nem. A lokalizációnak csak az egyik (szerintem egyszerűbb, de mindenképp favágóbb) része a fordítás, a másik az ilyen helyi, nyelv- illetve kultúrafüggő dolgok átültetése. A betűzést pl. nem fordítani, hanem átültetni kell.
- A hozzászóláshoz be kell jelentkezni
Cseréltem a betűzéshez használandó szavakat a magyar szabályok szerint.
- A hozzászóláshoz be kell jelentkezni
sub
--
>'The time has come,' the Walrus said<
- A hozzászóláshoz be kell jelentkezni
Hm, a dátumformátum kapcsán kiderült a turpisság: van ott FreePBX is ;-)
- A hozzászóláshoz be kell jelentkezni
Igen, mivel az Elastix a FreePBX-re épül. Egyébként elegánsabb megoldás lehet, ha csinálsz egy saját call szkriptet, és abban módosítod azt az egy sort, ugyanúgy hozzá lehet kötni a megfelelő feature code-hoz.
Igazság szerint a say.conf-on keresztül kellene konfigurálni ezt (mode=new paraméter mellett), viszont ha ezen keresztül állítom be, akkor a pontos idő helyett a pontos dátumot mondja be a beszélő óra. :)
- A hozzászóláshoz be kell jelentkezni
jó pofa :-)
- A hozzászóláshoz be kell jelentkezni
Ha telepítesz egy gtts-t (pip install gtts) és a make.sh-ben a './GoogleTTS.py -l hu -o "$f.mp3" -s "$text"' helyett 'gtts-cli.py "$text" -l hu -o "$f.mp3"'-t használsz, akkor működik.
- árp -
- A hozzászóláshoz be kell jelentkezni
Sziasztok, nálam most lenne aktuális a magyarított FreePBX, de sajnos tényleg nem működik a GoogleTTS.py. Valakinek lenne erre más megoldása, vagy korábbról esetleg megvannak a hang file-ok egy letöltés erejéig? Előre is köszi
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni