본문으로

Voĉlegi Esperanton en Android

글쓴이: sergejm, 2016년 3월 15일

글: 5

언어: Esperanto

sergejm (프로필 보기) 2016년 3월 15일 오후 8:23:32

Android ne havas Esperantan voĉon por TTS. Mi provis uzi rusan voĉon, skribinte Esperanton per rusaj literoj. Rezulto ne tro bona. Eble voĉoj por aliaj lingvoj pli taŭgos?
private void speak(String text)
{
int vowel1 = - 1, vowel2 = - 1;
int len = text.length();
StringBuilder sb = new StringBuilder(len);
boolean inTag = false;
for (int i = 0; i < len; i++) {
char ch = text.charAt(i);
if (inTag) {
if (ch == '>' )
inTag = false;
continue;
}
if (ch == '<' ) {
inTag = true;
continue;
}
boolean esp = true;
if (ch >= 'A' && ch <= 'Z' )
ch += 'a' - 'A';
if (ch >= 'a' && ch <= 'z' )
ch = "абцдэфгхийклмнoпqрстувwxyз".charAt(ch - 'a' );
else if (ch == 'ĉ' || ch == 'Ĉ' )
ch = 'ч';
else if (ch == 'ĝ' || ch == 'Ĝ' ) {
sb.append('д' );
ch = 'ж';
} else if (ch == 'ĥ' || ch == 'Ĥ' )
ch = 'х';
else if (ch == 'ĵ' || ch == 'Ĵ' )
ch = 'ж';
else if (ch == 'ŝ' || ch == 'Ŝ' )
ch = 'ш';
else if (ch == 'ŭ' || ch == 'Ŭ' )
ch = 'w';
else
esp = false;
int length = sb.length();
if (esp) {
int index = "иаэоуo".indexOf(ch);
if (length > 0 && sb.charAt(length - 1) == 'й' ) {
if (index >= 1) {
ch = "ияеёюё".charAt(index);
sb.replace(length - 1, length, "ъ" );
}
}
if (index >= 0) {
vowel2 = vowel1;
vowel1 = length + 1;
}
} else {
if (vowel2 > 0)
sb.insert(vowel2, AKCENTO);
vowel1 = vowel2 = - 1;
}
sb.append(ch);
}
text = sb.toString();
Toast.makeText(this, text, Toast.LENGTH_LONG).show();
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}

Kirilo81 (프로필 보기) 2016년 3월 15일 오후 8:39:31

Lingvoj, kiujn indus provi pro sufiĉa fonemsistema simileco al E-o:
-pola
-hispana
-itala

Mi ne vere komprenas, kiel funkcias tiu anstataŭiga tabelo, sed por la pola estus la jenaj korespondoj:
a - a
b - b
c - c
ĉ - cz
d - d
e - e
f - f
g - g
ĝ - dż
h - h*
ĥ - ch*
i - i/y::
j - j
ĵ - ż/rz
k - k
l - l
m - m
n - n
o - o
p - p
r - r
s - s
ŝ - sz
t - t
u - u
ŭ - ł
v - w
z - z

*Jen unu serioza problemo: en la moderna norma pola h kaj ch estas identaj (pli frue kaj ankoraŭ en orientaj dialektoj h esti/as voĉa, ch senvoĉa), ilia elparolo varias depende de la ĉirkaŭaĵo kaj persono inter [h], [x] kaj [χ]. Sed ĉar ĥ estas tiel malofta, eble ne estos tro multe da problemoj.

::Bone, jen alia problemo: Antaŭ i oni palatigas (moligas) konsonanton, por havi malmolan elparolon, oni uzu y, kiu tamen estas pli centra, do oni havas aŭ si [ɕi] aŭ sy [sɨ], sed ne eblas [si].

Eble iu scias la detalojn por la itala aŭ alia lingvo.

sergejm (프로필 보기) 2016년 3월 16일 오전 5:17:48

krom apartaj sonoj, kiel oni prononcas son-kombinojn kaj faras akcentoj?
Kun rusa voĉo, kiel vi povas vi el mia programo, por pli bona prononco mi anstataŭis ja, je, jo, ju per 'ъя', 'ъе', 'ъё', 'ъю' kaj aldonas akcenton (mi forgesis kazon, kiam oni anstataŭas -o per apostrofo, kaj nombrojn). Estas strange, ke 'ъ' en komenco de vortoj estas ignorata, sed 'й' iafoje estas prononcata laŭ liternomo - 'и краткое'. Rusa voĉo fakte estas ankaŭ angla (se renkontiĝas angla vorto, ĝi estas prononcata angle), tial 'ŭ' mi anstataŭas per 'w'. Sed la ĉefa problemo estas prononco de senakcenta 'o'.

Pli bone estus uzi unu el EFIGS - english-french-italian-german-spanish, ĉar oni povas uzi tiujn lingvojn en tts dekomence.
Kaj plej bone se estus subteno de IPA.

Kirilo81 (프로필 보기) 2016년 3월 16일 오전 10:50:46

La pola havas la avantaĝon, ke senakcentaj kaj akcentitaj vokaloj estas kvalite samaj, krome la vortakcento kiel en Esperanto estas sur la antaŭlasta silabo, tiel ke pri vokaloj kaj akcento oni entute ne devus zorgi.
Pri sonkombinoj krom la problemoj menciitaj mi nenion povas diri, ĉar mi ne scias, kiel funkcias la voĉlega programo.

Mi memoras, ke Ilona Koutny en Poznań multe okupiĝis pri parolsintezo, eble ŝi verkis ankaŭ ion pri Esperanto.

Jen E-a teksto per pola ortografio. La lokojn, kie la reguloj de la pola rezultigas ion alian ol la E-aj, mi grasigis:

En la mondon wenis nowa sento
tra la mondo iras forta woko
per flugiloj de facila wento
nun de loko flugu dżi* al loko.
Ne al glawo sangon soifanta
dżi* la homan tiras* familijon
al la mond' eterne militanta
dżi proponas sanktan harmonijon


*Mi ne scias, ĉu tio funkcios, ĉar t regule ne povas aperi antaŭ i.
mond' en la pola elvenus kiel [mɔnt].

sergejm (프로필 보기) 2016년 3월 16일 오후 4:32:56

Pola voĉo sonas pli bone, ol la rusa (al mi ĝi ŝajnas tro rapida, sed ie oni povas agordi rapidecon), sed:
kwar prononcatas kfar
Fina -e foje estas glutita
tie rekonatas kiel angla vorto kaj prononcatas taj

다시 위로