gpt4 book ai didi

java - 让 Sphinx4 使用自定义 .gram 文件识别所有数字

转载 作者:行者123 更新时间:2023-12-02 03:13:32 24 4
gpt4 key购买 nike

描述

Java 中的语音识别计算器使用 Sphinx4 library存在。

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);
<小时/>

问题:

我希望程序能够识别英语中从 0 到 100 万的数字

在当前状态下,如您所见,它可以识别数字(一|二|三|四|五|六|七|八|九|十|十一|十二|十三|十四|十五|十六 | 十七 | 十八 | 十九 | 二十),因为我已将它们手动写入 gram 文件 中。

我的意思是我必须将它们全部手动写入gram文件(我可以创建一个程序来生成该文件),但这似乎是不可能的(可能存在某种模式),该文件将太多千兆字节。

<小时/>

最后:

有什么聪明的解决方案吗?感谢您的努力:)

<小时/>

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};

最佳答案

最聪明的解决方案是首先识别文本字符串。语法不应该很复杂,它应该只是列出数字中使用的单词:

 grammar number;

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 | and )*;

识别文本后,将其转换为数字。您可以查看How to convert words to a number?了解详情。

关于java - 让 Sphinx4 使用自定义 .gram 文件识别所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40691518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com