[go: up one dir, main page]

File: README_pl

package info (click to toggle)
libdumbtts 0.3.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 344 kB
  • sloc: ansic: 3,054; makefile: 42; sh: 9
file content (269 lines) | stat: -rw-r--r-- 7,652 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
LIBDUMBTTS

Libdumbtts to biblioteka, rozszerzająca możliwości tzw. "głupich syntezatorów",
które potrafią jedynie wypowiedzieć podany na wejściu napis zawierający
wyłącznie znaki z alfabetu języka, którym operuje syntezator. Wzbogaca
możliwości syntezatora o:

1) tłumaczone nazwy klawiszy.

2) Wymawianie pojedynczych znaków. Rozpoznaje wszystkie znaki
   z zakresu 0x20-0x17f.
   
   W przypadku liter możliwe jest rozpoznawanie
   wielkich liter zarówno poprzez poprzedzenie litery prefiksem 'wielka',
   jak i zasygnalizowanie funkcji wywołującej że wymawiana jest wielka
   litera (przydatne przede wszystkim, gdy poprzedzamy wielkie litery
   ikona dźwiękową).
   
   Akcentowane litery są wymawiane poprzez złożenie litery i nazwy akcentu
   (np. 'č' dla języka polskiego może być wymawiane jak 'ce z haczkiem').
   
3) Konwersja wprowadzonego tekstu w kodowaniu UTF-8 do jednobajtowego
   kodowania syntezatora. Wymowa wszystkich liter jest konfigurowalna
   (np "maček" w języku polskim będzie wymawiane jako "maczek").
   Zaimplementowane jest również prosta metoda transliteracji cyrylicy
   (dla znaków z zakresu 0x400 - 0x47f).
   
Biblioteka zaprojektowana została do obsługi syntezatora Ivona i współpracy
ze speech-dispatcherem, jednak powinna być na tyle uniwersalna, aby
możliwe było generowanie tekstów dla dowolnego syntezatora.

FUNKCJE:

struct dumbtts_conf *dumbtts_TTSInit(char *lang);

	Inicjalizuje strukturę dumbtts_conf oraz wczytuje plik
	danych.	Pliki danych znajduje się w /usr/share/dumbtts/xx.conf.
	gdzie "xx" to dwuliterowy kod języka. Po wczytaniu tego pliku
	funkcja próbuje znaleźć kolejno pliki /etc/dumbtts/xx.conf oraz
	~/.dumbtts_xx.conf i koryguje wczytane uprzednio elementy.
	Zwraca nowo przydzielony obszar pamięci, który nie może być
	zwalniany przez free()!

void dumbtts_TTSFree(struct dumbtts_conf *conf);

	Zwalnia pamięć przydzieloną przez dumbtts_TTSInit.

int dumbtts_WCharString(
	struct dumbtts_conf *conf,
	wchar_t wc,
	char *outbuf,
	int len,
	int capMode,
	int *isCap);

int dumbtts_CharString(
	struct dumbtts_conf *conf,
	char *ch,
	char *outbuf,
	int len,
	int capMode,
	int *isCap);
	
	Literuje znak (w przypadku CharString pierwszy znak napisu).
	Wynikowy napis umieszczany jest w obszarze wskazanym przez
	parametr outbuf o wielkości co naajmniej len znaków.
	Parametr capMode oznacza sposób oznaczania wielkich liter.
	Może przyjmować jedną z trzech wartości:

		0 - brak oznaczania wielkich liter
		1 - oznaczenie wielkiej litery przez aplikację
		2 - poprzedzenie wielkiej litery słowem "capital"
		    (lub odpowiednikiem dla konkretnego języka).

	Aktualnie wartość 1 i 0 mają identyczne działanie.
    
	Parametr isCap powinien zawierać wskaźnik do zmiennej typu int
	lub NULL. Jeśli nie jest NULL, wartość zmiennej zostanie
	ustawiona na 1 w przypadku wielkiej litery lub na 0 w przypadku
	innego znaku.

Wartość zwracana:

	Jeśli konwersja się powiodła, zwracane jest 0. Jeśli parametr
	outbuf był NULL lub podana wielkość wskazanego obszaru jest zbyt
	mała aby pomieścić skonwertowany napis, zwracana jest minimalna
	potrzebna wielkość obszaru. W przypadku błędu zwracana jest
	wartość ujemna.


int dumbtts_KeyString(
	struct dumbtts_conf *conf,
	char  *str,
	char *outbuf,
	int len,
	int capMode,
	int *isCap);
	
	Konwertuje nazwę klawisza (np "space", "underscore") zawarty w str
	na wymawialny przez syntezator napis. Znaczenie parametrów i
	wartość zwracana jak dla CharString.

int dumbtts_GetString(
	struct dumbtts_conf *conf,
	char *str,
	char *outbuf,
	int len,
	int punctMode,
	char *punctChars,
	char *punctLeave);

	Konwertuje podany w str napis na postać wymawialną przez syntezator.
	Parametr punctMode może przyjąć jedną z trzech wartości:

		0 - znaki interpunkcyjne są pomijane;
		1 - czytane są wyłącznie znaki interpunkcyjne podane
		    w parametrze punctChars;
		2 - czytane są wszystkie znaki interpunkcyjne.

	Parametr punctLeave to napis składający się ze znaków, które
	muszą być pozostawione w wynikowym napisie bez względu na
	wartość punctMode - są to podstawowe znaki interpunkcyjne
	sterujące wymową. Dla Ivony wartością napisu powinno być ".,!?;:"
	
	Znaczenie parametrów outbuf i len oraz wartość zwracana
	jak dla CharString.

PLIKI DANYCH

Plik podzielony jest na sekcje. Nazwa każdej sekcji ujęta jest w
nawiasy kwadratowe. Przy wczytywaniu rozpoznawane są pierwsze cztery litery
nazwy. Puste linie są pomijane. Komentarze rozpoczynają się od ciągu "//".
Pliki muszą być w kodowaniu UTF-8.

Pliki znajdujące się w /usr/share/dumbtts nie powinny być edytowane,
zamiast tego należy skopiować je do katalogu /etc/dumbtts i tam
nanieść konieczne poprawki.

Znaczenie sekcji:

SEKCJA [clist]

Zawiera deklarację wszystkich liter rozpoznawanych przez syntezator
w postaci:

#numer znak

gdzie "numer" jest reprezentacją danego znaku w kodowaniu używanym
przez syntezator, "znak" jest pojedynczą małą literą.

Przykładowo dla języka polskiego sekcja będzie miała postać:

[clist]
xB1 ą
xEA ę
xB6 ś
xE6 ć
xF1 ń
xF3 ó
xBC ź
xBF ż
xB3 ł

SEKCJA [spell]

Zawiera pary znak - nazwa używane przy wymawianiu pojedynczych znaków.
Znak może być zakodowany w notacji #numer (dziesiętnie) lub
#xnumer (szesnastkowo). Odczytany numer odpowiada kodowi znaku w UNICODE.

Przykład:

y igrek

Sekcja [pronunciation]

Zawiera tabele wymowy poszczególnych znaków przy czytaniu tekstów.

Przykłady:

ń ń
č cz

SEKCJA [diacritics]

Zawiera nazwy modyfikatorów oraz kilka słów zastrzeżonych.

ill nielegalny // nielegalny symbol itp.
let litera  // przed literą czytaną numerycznie
cap wielkie // przed pojedynczą wielką literą
caplet wielka litera // przed wielką literą czytaną numerycznie
lig ligatura // przed ligaturą
caplig wielka ligatura // przed wielką ligaturą
sym znak // przed pozostałymi znakami czytanymi numerycznie

ced cedilla	// cedilla
bre brewis	// breve
dot z kropką	// dot above
dia umlałt	// diaeresis, umlaut
acu ostre	// acute
gra ciężkie	// grave
ac2 hungarumlałt	// double acute
cir z daszkiem	// circumflex
mac nadkreślone	// macron
rin z kółkiem	// ring above
str skreślone	// stroke
ogo z ogonkiem	// ogonek
til z tyldą	// tilde
car z haczkiem	// caron, hacek

SEKCJA [keys]

Zawiera pary nazwa - tłumaczenie przy odczytywaniu klawiszy.

Przykład:

space	spacja
underscore podkreślenie
double-quotes cudzysłów

SEKCJA [cyrillic]

Zawiera pary znaki - transliteracja przy czytaniu cyrylicy.
"Znaki" to jedna lub dwie małe litery w cyrylicy, transliteracja
może być pusta.

SEKCJA [roman]

Zawiera konfigurację konwersji liczb rzymskich:

minlen <n>
	minimalna długość liczby rzymskiej
	
maxval <n>
	największa liczba interpretowana jako rzymska

ignore <zakresy>
	te liczby nie będą interpretowane jako rzymskie.
	<zakresy> to ciąg zapisów typu:
		n1-n2	(wartości od n1 do n2 nie będą interpretowane
			jako rzymskie)
		nn	(ta wartośc nie będzie interpretowana jako rzymska)
		
	Liczby mogą być podawane w notacji rzymskiej lub arabskiej
	
	Przykład:
	
	ignore 100-200 300-1900 XL LX

ignore reset
	niweluje działanie poprzednich linii "ignore" (przydatne we własnych
	plikach konfiguracyjnych)
	
SEKCJA [dictionary]

Zawiera linie zawierające ścieżki do plików słownika:

path	/ścieżka/do/słownika

(opisy słownika - todo)

SEKCJA [formats]

Zawiera formatowania czytania dat, godzin oraz liczb mianowanych

(todo)

Wszelkie sugestie i poprawki mile widziane.

Bohdan R. Rau <ethanak@polip.com>