【发布时间】:2017-04-03 03:45:50
【问题描述】:
说明
存在使用Sphinx4 library 的Java 语音识别计算器。
github上的完整代码:here
我使用的 gram 文件如下(on github):
#JSGF V1.0;
/**
* JSGF Grammar
*/
grammar grammar;
public <syntax> = (one | two | three| four| five | six | seven | eight | nine | ten | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty)
(plus | minus | multiply | division)
(one | two | three| four| five | six | seven | eight | nine | ten | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty);
问题:
I want the program to be able to recognize numbers from 0 to 1 million in English Language 。
在当前状态下,您可以看到它可以识别数字(one | two | three| four| five | six | seven | eight | nine | ten | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty),因为我已将它们手动写入gram file。
我的意思是我必须将它们全部手动写入gram file(我可以创建一个程序来生成该文件)但是这似乎是不可能的(可能存在某些模式),该文件将太多千兆字节。
最后:
有什么聪明的解决方案吗?谢谢你的努力:)
Nikolay之后的新语法解决方法是:
public <number> = (one | two | three | four | five | six | seven | nine | ten
| eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty
| thirty | forty | fifty | sixty | seventy | eighty | ninety | hundred | thousand | million | billion)+;
public <syntax> = <number>{1} (plus | minus | multiply | division){1} <number>{1};
【问题讨论】:
标签: java speech-recognition sphinx4