VekouJava粵語語音合成系統(tǒng)
至于為什么叫Vekou,我也不知道,唯一想了一分鐘多的是用什么字母開頭,i是蘋果,z和m、w都是微軟,k是相機和膠卷,d像狗,所以還是v 比較有型一點,然后隨手就把后面幾個可以連在一起發(fā)音的字母敲出來了。Vekou讀作'vekau,項目進行了一段時間以后才突然想起需要一個比較像樣的名,一開始建eclipse項目名用的還是speech synthesis。
Vekou目前雖然發(fā)音質量不是相當好,但基本上還可以工作了。你可以給一個String讓它發(fā)音,也可以給一個txt文檔讓它發(fā)音,當然你也可以讓程序給你生成一個語音文件。0.0.4版的功能詳細的功能說明如下:
1. String發(fā)音
2. txt文檔文件發(fā)音,txt文檔編碼自動檢測
3. 語音文件生成
4. 粵語口語轉換發(fā)音
5. time scaling(未實現(xiàn))
6. pitch scaling(未實現(xiàn))
7. 繁簡支持
8. 語音庫自定義
9. 詞典自定義
10. 口語字典自定義
Vekou的誕生離不開Ekho(余音)的支持,Vekou的語音庫以及初始詞典全部來自于它,還有基于中科院的imdict 智能詞典所采用的智能中文分詞程序,Vekou的底層使用到中文分詞。
你可以很簡單的使用它,初次嘗試的時候你可以建立一個如下的 Test.java文件來測試:
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.lib.speech.engine.Engine;
import org.lib.speech.engine.SpeechEngine;
import org.lib.speech.process.DefaultStreamProcess;
import org.lib.speech.process.ProcessCenter;
public class Test {
public static void main(String[] args) {
// 建造一個流處理器,參數(shù)設置是否重新讀取字典文件
ProcessCenter pc = new DefaultStreamProcess(true);
// 建立一個語音引擎,第二個參數(shù)設置是否轉換為粵語口語發(fā)音
Engine engine = new SpeechEngine(pc, true);
// 任何一個String作為你想要它發(fā)音的句子
String sentences = "你可以在這里嘗試任何一個句子,看看它是如何發(fā)音的。";
// 第一種方法:直接要它發(fā)音
engine.getPronounces(sentences);
// 第二種方法:句子在一個txt文檔中,你要它把txt中的內(nèi)容讀出來,第二個參數(shù)設置是否將文檔內(nèi)容輸出到控制臺顯示
try {
engine.getPronounces(new File("C:/a.txt"), false);
} catch (IOException e) {
e.printStackTrace();
}
// 第三種方法:把發(fā)音保存在一個.au的聲音文件中,目前只支持保存到這種文件,當然你也可以自己擴展
try {
engine.getPronouncesFile(sentences, new File(
"C:/a.au"));
} catch (IOException e) {
e.printStackTrace();
}
// 另外,如果你想獲得初始的發(fā)音素材,可以這樣顯示到控制臺
List<Object[]> list = engine.getPronounceElements(sentences);
Iterator<Object[]> iter = list.iterator();
while (iter.hasNext()) {
Object[] obj = iter.next();
if (obj[0] instanceof File) {
for (int i = 0; i < obj.length; i++) {
File file = (File) obj[i];
System.out.print(file.getName() + " ");
}
} else {
for (int i = 0; i < obj.length; i++) {
System.out.print(obj[i] + " ");
}
}
System.out.println();
}
}
}
