Ci, którzy używają syntezatora Ivona w wersji SAPI zauważyli pewnie denerwujący fakt: otóż wbudowany w Ivonę słownik (w rzeczywistości jest to bardzo prymitywny, oparty na wyrażeniach regularnych preprocesor tekstu) zawiera kilka konstrukcji które poza pewnymi kontekstami są pozbawione sensu. I tak na przykład wyraz hol. (czyli słowo "hol" zakończone kropką) jest czytane na końcu zdania jako "holenderski". Może to śmieszyć, ale zdanie "samochód został wzięty na holenderski" znalezione w książce wcale nie śmieszy - wręcz przeciwnie, powoduje zaburzenie w odbiorze tekstu.
Jeśli więc korzystamy z Ivony tylko poprzez Milenę i OpenSapi, możemy wyłączyć
wbudowany słownik. W tym celu wchodzimy do naszego katalogu:
~/.wine/drive_c/Program Files/IVONA/IVONA 2 Voices
i zmieniamy nazwę pliku polish-ivona.lex np. na polish-ivona.lex.old (nie usuwamy pliku, bo kiedyś może się nam przydać), oraz polish-prm.lex na polish-prm.lex.old. Następnie w dowolnym edytorze tworzymy nowy plik polish-ivona.lex z następującą zawartością:
#& encoding=UTF-8
"~!" "`"
"~'" "'"
Oczywiście w miejsce ".wine" musimy podstawić właściwą nazwę katalogu Wine.
Od tej chwili Ivona przestanie realizować swoje radosne pomysły na upiększenie polskiej wymowy. Należy pamiętać, że aby zmiana odniosła skutek należy przeładować głos Ivony!
Po przyzwyczajeniu się do słodkiego głosiku Mileny zaczyna razić pewien fakt: otóż w podstawowej konfiguracji Milena przesadnie akcentuje wyrazy aby zwiększyć czytelność, również pauzy mogą wydawać się przydługie. W pewnym stopniu można to poprawić w sposób następujący:
pause comma 20
pause statement 100
pause exclamation 100
pause question 180
pause colon 50
pause ellipsis 220
pause conj 15
pause dialog comma 40
pause dialog statement 150
pause dialog exclamation 80
pause dialog question 80
pause dialog colon 50
pause dialog ellipsis 180
length stress 5
tempo=0.84
pitch=0.9
mbrola_conf=[tu wstaw ścieżkę do pliku profi.dat]
Parametry tempo
i pitch
dobieramy według własnych potrzeb.
Od tej chwili Milena nie będzie przedłużać akcentowanych sylab. Skrócenie pauz między frazami spowoduje pewne przyspieszenie czytania, przy zachowaniu czytelności interpunkcji.
Aby utworzyć audioksiążkę, prede wszystkim musimy dysponować tekstem książki w postaci pliku .txt w kodowaniu ISO-8859-2, każdy akapit w jednej linii. Oczywiście jest raczej mało prawdopodobne, że interesująca nas książka będzie akurat w tej postaci - tak więc musimy przeprowadzić konwersję z formatu w którym książka została dostarczona. Do tego celu służy milenizer.
W najprostszym przypadku książkę mamy w pliku rtf lub doc. Milenizer natywnie przeprowadza konwersję z formatu rtf, dla formatów doc i odt automatycznie użyje antiworda lub odt2txt. Tak więc wydajemy polecenie:
milenizer -o ksiazka.txt ksiazka.rtf
Po jego wykonaniu w pliku ksiazka.txt powinniśmy otrzymać postać tekstową książki.
Czasem zdarza się, że milenizer natrafi na znak, którego nie jest w stanie przekształcić na ISO-2. W tym celu można posłużyć się opcją -i (znak zostanie zignorowany) lub -I (znak zostanie zapisany w postaci encji szesnastkowej w celu późniejszego ręcznego poprawienia). Nasze polecenie będzie wyglądać więc tak:
milenizer -I -o ksiazka.txt ksiazka.rtf
Teraz musimy sprawdzić, czy książka jest rzeczywiście w formacie takim jak potrzeba (czyli pojedyncza linia na każdy akapit). W większości przypadków tak będzie, lecz zdarza się że osoba nieumiejętnie skanująca książkę pozostawia formatowanie, a nawet numery linii. Otwieramy w tym celu plik książka.txt w naszym ulubionym edytorze tekstu (należy pamiętać, aby umiał on obsługiwać kodowanie ISO-8859-2) i po prostu przeglądamy kilka pierwszysh stron. Jeśli pozostawiono formatowanie należy ponownie użyć milenizera:
milenizer -u 50 -o ksiazka2.txt ksiazka.txt
Opcja -u informuje program, że należy dokonać "odformatowania" tekstu, przy czym liczba podana jako argument oznacza, że linie krótsze niż podana zostaną potraktowane jako końcowe linie akapitu.
Jeśli pozostawiono w książce również numery stron, opcję -u należy zastąpić -U. Spowoduje to, że linie zawierające wyłącznie ciągi cyfr oraz otaczające je puste linie zostaną usunięte przed dokonaniem odformatowania.
Zdarza się również, że książkę mam w postaci pliku txt. Musimy oczywiście obejrzeć jak wygląda ów plik. Opcji -u i -i możemy użyć jak w przykładzie powyżej. Dodatkowo może się zdarzyć, że tekst jest co prawda sformatowany, ale wszystkie akapity są rozdzielone pustym wierszem. Możemy wtedy użyć specjalnej formy:
milenizer -u 0 -o ksiazka2.txt ksiazka.txt
Wartość argumentu "0" oznacza, że milenizer nie będzie próbował odgadywać gdzie kończy się akapit, a po prostu podzieli tekst na akapity uwzględniając oddzielające puste linie.
W najprostszym przypadku możemy już skonwertować tekst na mp3. Zakładając że plikiem tekstowym jest ksiazka.txt, wydajemy polecenie:
milena_book ksiazka.txt
W efekcie otrzymamy plik ksiazka.mp3, który możemy załadować do naszego odtwarzacza.
Niestety, taki najprostszy scenariusz możliwy jest wyłącznie wtedy, gdy książka jest stosunkowo krótka (np. pojedyncze opowiadanie). Przy dłuższej formie pojedynczy plik mp3 jest niezbyt wygodny. Najprostszym sposobem będzie podzielenie pliku na części. W tym celu musimy zaopatrzyć się w program mp3splt. Wydajemy polecenie:
mp3splt -f -t 5.0 -a -p th=-48,gap=120,off=0.4 -d rozdzialy ksiazka.mp3
W efekcie zostanie utworzony katalog o nazwie "rozdzialy" a w nim pliki odpowiadające poszczególnym częściom książki podzielonej na fragmenty długości 5 minut.
Jeśli potrzeba innej długości części, podajemy ją w opcji -t polecenia.
Oczywiście, metoda podziału na odcinki równej długości nie zawsze jest wygodna Szczególnie jeśli książka będzie przygotowana do przesłuchania przez kilka osób. lub mamy zamiar korzystać z niej wielokrotnie (np. podręcznik) warto poświęcić chwilę na porządne przygotowanie książki do konwersji.
Milenizer oprócz konwersji na txt potrafi również w sposób mniej lub więcej automatyczny podzielić książkę na rozdziały. Aby z tej możliwości skorzystać, musimy lekko przeredagować treśc książki.
Pierwsza linia będzie czytana na początku każdego rozdziału. Najlepiej jest więc umieścić w niej autora i tytuł książki.
Kolejne rozdziały rozpoznawane są poprzez wstawienie znaku '#' na początku pierwszej linii rozdziału. Linia znajdująca się bezpośrednio za znakiem '#' będzie traktowana jako tytuł rozdziału. Stąd postać książki będzie mniej więcej taka:
Juliusz Verne, Łowcy meteorów
#Rozdział pierwszy, w którym sędzia John Proth...
Nie ma powodu ukrywać przed czytelnikami, że miasto...
...
#Rozdział drugi, który wprowadza czytelnika do domu...
- Mitz, Mitz!
- O co chodzi, synusiu?
...
Po przygotowaniu tekstu tworzymy sobie jakiś katalog (np. "ksiazka") i wydajemy polecenie:
milenizer -s ksiazka/ksiazka ksiazka.txt
Opcja -s oznacza podział na rozdziały, następujący po niej parametr to wzór według którego zapisane będą kolejne pliki. W przypadku polecenia jak powyżej będą to odpowiednio ksiazka/ksiazka_01.txt, ksiazka/ksiazka_02.txt itd.
Teraz konwertujemy poszczególne rozdziały na mp3. Korzystamy tu z możliwości milena_book konwersji wszystkich plików txt w katalogu:
milena_book ksiazka
Po wykonaniu polecenia w katalogu ksiazka otrzymamy pliki mp3 odpowiadającew każdemu plikowi txt - czyli w naszym przypadku ksiazka/ksiazka_01.mp3, ksiazka/ksiazka_02.mp3 itd.
Program milena_book przyjmuje kilka dodatkowych parametrów. Najczęstsze z nich to:
Tak więc konwersja np. powieści J. Deavera (miejsce akcji Nowy Jork, częste użycie zapisu godzin) będzie wyglądać następująco:
milena_book -Len -H kolekcjoner_kosci
Posiadacze telefonów Nokia z systemem Symbian mogą zamiast odtwarzacza mp3 użyć programu Nokia Audiobook, przeznaczonego specjalnie do słuchania książek w wersji audio.
Przede wszystkim, musimy utworzyć dodatkowy indeks dla generowania spisu treści. Do tego celu służy dodatkowy przełącznik -x milenizera. Tak więc nasze polecenie podzielenie książki będzie wyglądało tak:
milenizer -x -s ksiazka/ksiazka ksiazka.txt
Po wykonaniu polecenia w kattalogu docelowym oprócz plików txt znajdzie się plik index.nok.
Teraz w miejsce milena_book uruchamiamy milena_nokia. Ponieważ skrypt tworzy docelowy katalog w innym miejscu (tzn. jest to katalog bezpośrednio przystosowany do przegrania do E:\audiobooks naszej Nokii) musimy również podać jego nazwę:
milena_nokia ksiazka KsiazkaNokia
Po wykonaniu w katalogu KsiazkaNokia mamy wszystkie pliki potrzebne do zainstalowania na telefonie.
Oprócz parametrów znanych z milena_book skrypt przyjmuje dodatkowo:
Mimo że zarówno wbudowane słowniki, jak i reguły translacji pozwalają Milenie na prawidłową (lub przynajmniej nie rażącą) wymowę popularnych obcojęzycznych słów, w wielu przypadkach zachodzi konieczność poprawienia wymowy. Do utworzenia słownika służy program dykcjonarz.
Uruchamiamy go bardzo prosto:
dykcjonarz ksiazka.txt > slownik.txt
Możemy tu użyć również przałączników językowych, czyli np. dla angielskiego:
dykcjonarz -Len ksiazka.txt > slownik.txt
Dykcjonarz działa dość długo (w zależności od wielkości pliku i maszyny od kilku do kilkudziesięciu sekund), po zakończeniu działania w pliku slownik.txt zostaną wypisane w oddzielnych sekcjach słowa których dykcjonarz nie zna (tzn. te które nie znajdują się w pliku basewords.dat) oraz słowa znane, do których dykcjonarz ma jakieś wątpliwości (są to przede wszystkim słowa pisane w całym tekście wielką literą). Postać pliku jest bardzo prosta, każda linia ma postać typu:
słowo //wymowa w EPN-PL
Ciąg "//" (dwóch znaków slash) jest traktowany przez Milenę jako komentarz, tak że w tym przypadku "wymowa" służy tylko do pokazania, w jaki sposób dane słowo zostanie wymówione przez syntezator.
Teraz otwieramy ten plik w naszym ulubionym edytorze (dla przypomnienia: edytor musi pracować w ISO-8859-2) i dopisujemy wymowę dla słów, które Milena interpretuje nieprawidłowo. Wymowę podaje się normalnym tekstem ortograficznym, z następującymi rozszerzeniami:
lee li~'i
deep di~'ip // ale...
deep+purple diparp@l // "deep" nie jest tu akcentowane
// cała nazwa wymawiana łącznie
Zamiast podania wymowy możemy posłużyć się skrótami:
ana $S // będzie wymówione jako aen~!a
Iwanowicz $3 // będzie wymówione jako 'iv~!anoviC'
Wasiliewna $3 // błąd - będzie wymówione przez 'ś'
Wasiliewna was~'iljewna $3 // będzie wymówione jako vas~!iljevna
Czasem zachodzi konieczność podania wymowy całego zwrotu. Ponieważ w słowie nie może być spacji, ponadto różne (czasem błędne) pisownie mogą prowadzić do tego samego zwrotu, mamy tu następujące możliwości:
W słowie mogą wystąpic zarówno wielkie, jak i małe litery, przy czym wielka litera pasuje tylko do wielkiej litery w tekście, mała pasuje do litery niezależnie od wielkości. Pozwala to na zróżnicowanie wymowy homogramów (ważne przede wszystkim przy obcojęzycznych słowach). I tak np.:
Grace grejs
spowoduje, że słowo "Grace" będzie potraktowane jako imę (Grace Kelly na przykład) i wymówione
jako "grejs", natomiast słowo "grace" będzie potraktowane jako czysto polskie słowo
(liczba mnoga od "graca") i wymówione zgodnie z regułami polskiej wymowy.
Pamiętać należy, że przy dopasowaniu reguł ważna jest ostatnia pasująca, toteż złożone zwroty najlepiej umieszczać na końcu słownika.
Po utworzeniu słownika możemy podać go Milenie poprzez parametr -u. We wczytanym słowniku pominięte zostaną słowa które nie posiadają podanej wymowy.
Istnieje również możliwość kaskadowego tworzenia słowników, przydatna przede wszystkim przy tworzeniu np. kolejnych powieści z cyklu. Podanie dykcjonarzowi parametru -u spowoduje wczytanie podanego słownika i pominięcie znanych już słów w wynikowym słowniku. Parametr -u może wystąpić wielokrotnie. Pamiętać jedynie należy, aby Milenie podać wszystkie słowniki w podanej kolejności, np:
dykcjonarz -Len -u slownik.txt ksiazka.txt > slownik_nowy.txt
milena_book -Len -u slownik.txt -u slownik_nowy.txt ksiazka.txt