2015-11-19 61 views
0

我正在開發基於java的使用sphinx(Speech to Text)和FreeTTS(Text to Speech)的基於小型語音的交互工具。如何在java中使用sphinx和freetts管理hello.gram

例如:FreeTTS會給出類似於姓名的語音命令:用戶將回復他的姓名,年齡和地點。一切都是靜態的。

如何在獅身人面像寫hello.gram實現這一

public<greet>=[<name>] [<age>] [<place>]; 
<name> = john | max; 
<age> = ten | nine ; 
<place> = France | Spain; 

語音命令:你叫什麼名字 我的回答是:最大

觀察:最大10

語音命令:什麼是你的年齡 我的回覆:九個

觀察:九個法國

我想只有名字應該遵守當我說name.its高度間歇也:(

在此先感謝。

修改基於亞歷山大的答案。

回答

0

您可以使用下面的代碼來避免它。

public <name> = john | max; 
public <age> = ten | nine ; 
public <place> = France | Spain; 
1

有沒有神奇方法來做你想做的。你必須指定你想在你的文法中被識別的所有短語。我能推薦的唯一東西是分解一些規則,例如數字:

<數字> = one |兩個|三| |四個;
<數十年> = twenty |三十|四十
<numto44> = <數十年> | <數十年> <數字>;

+1

感謝您的輸入,我嘗試了您提到的內容。 public = [] [] [];有時幾十年,當我說數字印刷時。如何編碼時,我想說的名字,只有我提到的名稱只是必須承認。之後我會說數字。 – thanga

+0

查看http://cmusphinx.sourceforge.net/doc/sphinx4/edu/cmu/sphinx/jsgf/JSGFGrammar.html以瞭解JSGF規則是如何組成的。請注意,您也可以爲規則添加權重。在含糊不清的情況下,更重的規則更受青睞。 –