Pozdrav!
Poceo sam da radim na izdradi aplikacije za generisanje govora na bazi unetog teksta za srpski jezik(TTS), i shodno tome prva stvar koja mi je potreba jeste algoritam za rasclanjivanje unetih reci na slogove .
Napravio sam neki algoritam koji daje ok rezultate ali i dalje mislim da to nije to . Zanima me da li neko ima uspesno resen ovaj problem i sta misli o samom algoritmnu koji sam napisao i koji je jako prost....
package lang;
import java.util.ArrayList;
/**
*
* @author jkrne
*/
public class Word {
private String word;
private String result="";
public Word(String a)
{
this.word=a;
}
public String getAllSyllables()
{
ArrayList<Integer> syllablesLocations =new ArrayList<Integer>();
int syllablesCounter=0;
char c;
for (int j = 0; j<word.length(); j++) {
c=word.charAt(j);
result=result+c;
if((c=='a' || c=='A' || c=='e' || c=='E'|| c=='i' || c=='I' || c=='o' || c=='O' || c=='u' || c=='U'))
{
syllablesCounter=syllablesCounter+1;
syllablesLocations.add(j);
result=result+"-";
}
}
if(result.charAt(result.length()-1)=='-')
{
result=result.substring(0, result.length()-1);
}
if(result.charAt(result.length()-2)=='-')
{
result=result.substring(0, result.length()-2)+result.charAt(result.length()-1);
}
if(this.word.length()==3)
return this.word;
else
return result;
}
}
Algoritam se testira na sledeci nacin
public class Lang {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String rec=JOptionPane.showInputDialog("Unesite rec za analizu");
String podeljeno="";
Word w= new Word(rec);
podeljeno= w.getAllSyllables();
System.out.println(podeljeno);
// TODO code application logic here
}
}
Voleo bih da jednom javno resimo ovaj problem kako bi resenje bilo dostupno svima i kako bi ljudi koji bi zeleli da se bave izradom TTS aplikacija za srpski imali dobru pocetnu tacku cime bi se broj aplikacija
koje su u stanju da kovertuju tekst u govor na srpskom jeziku povecao. Pozdrav!
Poceo sam da radim na izdradi aplikacije za generisanje govora na bazi unetog teksta za srpski jezik(TTS), i shodno tome prva stvar koja mi je potreba jeste algoritam za rasclanjivanje unetih reci na slogove .
Napravio sam neki algoritam koji daje ok rezultate ali i dalje mislim da to nije to . Zanima me da li neko ima uspesno resen ovaj problem i sta misli o samom algoritmnu koji sam napisao i koji je jako prost....
package lang;
import java.util.ArrayList;
/**
*
* @author jkrne
*/
public class Word {
private String word;
private String result="";
public Word(String a)
{
this.word=a;
}
public String getAllSyllables()
{
ArrayList<Integer> syllablesLocations =new ArrayList<Integer>();
int syllablesCounter=0;
char c;
for (int j = 0; j<word.length(); j++) {
c=word.charAt(j);
result=result+c;
if((c=='a' || c=='A' || c=='e' || c=='E'|| c=='i' || c=='I' || c=='o' || c=='O' || c=='u' || c=='U'))
{
syllablesCounter=syllablesCounter+1;
syllablesLocations.add(j);
result=result+"-";
}
}
if(result.charAt(result.length()-1)=='-')
{
result=result.substring(0, result.length()-1);
}
if(result.charAt(result.length()-2)=='-')
{
result=result.substring(0, result.length()-2)+result.charAt(result.length()-1);
}
if(this.word.length()==3)
return this.word;
else
return result;
}
}
Algoritam se testira na sledeci nacin
public class Lang {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String rec=JOptionPane.showInputDialog("Unesite rec za analizu");
String podeljeno="";
Word w= new Word(rec);
podeljeno= w.getAllSyllables();
System.out.println(podeljeno);
// TODO code application logic here
}
}
Voleo bih da jednom javno resimo ovaj problem kako bi resenje bilo dostupno svima i kako bi ljudi koji bi zeleli da se bave izradom TTS aplikacija za srpski imali dobru pocetnu tacku cime bi se broj aplikacija
koje su u stanju da kovertuju tekst u govor na srpskom jeziku povecao. Pozdrav!
