语音识别算法转换数字

时间:2013-07-05 14:24:23

标签: microcontroller voice arduino-ide

我正在制作声音命令计算器..因为我预先存储了一些声音 (1到9),(10,20-90),(百,千,万)。 如果我想计算1234 + 45678
 我需要说“”一千二百三十四加上四万五千六百七十八“ 我的语音识别系统将其识别为{1,1000,2,100,40,4,} + {40,5,1000,6,100,70,8}
但我不知道如何编写程序来计算上述问题。我希望你理解我的问题并找到一个更好的解决方案.. 我已经计划了一个解决方案,但它有一些循环漏洞 在第一个括号中

  

规则1:将连续数相乘并添加结果,
  规则2:如果发现连续组中的第一个数字   10,20,30,40 ... 90.it将连续添加下一个数字   而不是乘以
  规则3:它会一直持续到找到之为止   像(+, - *,/)这样的符号,像这样(1 * 1000)+(2 * 100)+(30 + 4)= 1234   类似的第二个括号并添加结果

我对上述程序不满意,请尝试找到更好的解决方案。我将非常感谢你。

如果我的问题不明确,请在评论中留下,我会尽力解释我的水平。

1 个答案:

答案 0 :(得分:0)

数字11-13听起来不同但我会假设你在你的"数字"代码。

无论如何,第一次通过每个数组应该产生交替的"数字"和"乘数" 这样

[40, 5, 1000, 6, 100, 70, 8]

变为

[45, 1000, 6, 100, 78]

然后你可以进行乘法和加法。但稍微修改规则,以便测试下一个数字是否可被10整除。如下所示:

int i = 0;
int temp_result = 0;
while(i <= size_of_array){
    if(i == size_of_array - 1){
        temp_result = temp_result + array[i];
    }
    else{
        if(array[i+1] % 10){
            temp_result = temp_result + array[i]*array[i+1];
        }else{
            temp_result = temp_result + array[i];
        }
    }
    i = i + 2;
}