1 package com.neuronrobotics.bowlerstudio.lipsync;
3 import java.io.BufferedReader;
5 import java.io.FileReader;
6 import java.util.ArrayList;
7 import java.util.Arrays;
8 import java.util.HashMap;
12 import com.neuronrobotics.bowlerstudio.AudioStatus;
23 StringBuilder result =
new StringBuilder();
24 for (
int i = 0; i < phonemes.length(); i++) {
25 char c = phonemes.charAt(i);
26 if (c ==
' ' || (c >=
'A' && c <=
'Z')) {
30 return result.toString().toLowerCase();
33 private ArrayList<String>
parseEntry(String entry, Map<String, ArrayList<String>> d) {
34 String[] tokens = entry.split(
" ");
35 if (tokens.length < 2) {
38 String word = tokens[0].trim().toLowerCase();
39 if (word.endsWith(
")")) {
42 ArrayList<String> mine =
new ArrayList<String>();
43 for(
int i=1;i<tokens.length;i++) {
54 Map<String, ArrayList<String>>
dictionary =
new HashMap<>();
55 String[] entries = dictionaryText.split(
"\n");
56 for (String entry : entries) {
57 if (entry.startsWith(
";;;")) {
69 BufferedReader reader =
new BufferedReader(
new FileReader(dictionaryUrl));
70 StringBuilder stringBuilder =
new StringBuilder();
72 while ((line = reader.readLine()) !=
null) {
73 stringBuilder.append(line).append(
"\n");
76 return stringBuilder.toString();
79 public void init(File dictionaryUrl)
throws Exception {
84 public ArrayList<String>
find(String w) {
85 List<String> extra=
null;
86 if(w.endsWith(
"n't")) {
87 String newW =w.substring(0,w.length()-3);
90 extra =Arrays.asList(
"n",
"t");
92 if(w.endsWith(
"'ar")) {
93 String newW =w.substring(0,w.length()-3);
96 extra =Arrays.asList(
"r");
98 if(w.endsWith(
"'ll")) {
99 String newW =w.substring(0,w.length()-3);
102 extra =Arrays.asList(
"uw",
"l");
104 if(w.endsWith(
"'ve")) {
105 String newW =w.substring(0,w.length()-3);
108 extra =Arrays.asList(
"v");
110 if(w.endsWith(
"'re")) {
111 String newW =w.substring(0,w.length()-3);
114 extra =Arrays.asList(
"r");
116 if(w.endsWith(
"'s")) {
117 String newW =w.substring(0,w.length()-2);
120 extra =Arrays.asList(
"s");
122 if(w.endsWith(
"'d")) {
123 String newW =w.substring(0,w.length()-2);
126 extra =Arrays.asList(
"d");
128 ArrayList<String> phonemes =
new ArrayList<String>();
129 ArrayList<String> dictionaryGet =
dictionary.get(w);
130 if(dictionaryGet==
null) {
131 dictionaryGet =
new ArrayList<String>();
132 byte[] bytes = w.getBytes();
134 for(
int i=0;i<w.length();i++) {
135 String charAt = ((char)bytes[i])+
"";
138 dictionaryGet.add(charAt);
141 if(s.contains(charAt)) {
142 dictionaryGet.add(s);
151 phonemes.addAll(dictionaryGet);
153 phonemes.addAll(extra);
PhoneticDictionary(File f)
ArrayList< String > parseEntry(String entry, Map< String, ArrayList< String >> d)
String normalizePhonemes(String phonemes)
ArrayList< String > find(String w)
Map< String, ArrayList< String > > parseDictionary(String dictionaryText)
String fetchDictionaryText(File dictionaryUrl)
Map< String, ArrayList< String > > dictionary
void init(File dictionaryUrl)
static AudioStatus getFromPhoneme(String code)
static Set< String > getPhonemes()