使用语音识别在Android上选择单选按钮

时间:2015-05-22 03:00:12

标签: android speech-recognition

我是Android新手。目前,我正在使用SpeechRecognizer进行测验,以选择问题的答案

回答有5个单选按钮
每个收音机有3到5个字

答案示例:

  • Jhonny喜欢苹果
  • Donny喜欢苹果
  • Boni喜欢苹果
  • Ronney喜欢苹果
  • 莫莉喜欢苹果

目前我的应用程序只能在识别出的单词全部匹配时选择答案。

我想做的是..
如果识别的单词比其他单词更多,我的应用程序如何选择其中一个答案。

就像这样,如果识别的单词是Mollyapple,那么最接近的答案是Molly likes an apple,那么我的应用就可以选择它。
我怎么能做到这一点?

提前谢谢你。

2 个答案:

答案 0 :(得分:0)

为了使其运作良好,您必须采取一些解决方法。我的建议是:

  1. 选择彼此完全不同的名称。喜欢:约翰尼,史蒂文,阿尔弗雷德等。原因是为了确保名称能够被正确选取,而邦尼不会与约翰尼混在一起。
  2. 当您拥有正确选择的名称时,收集所有名称(johnny,jonny,johnnie,johny,jonnie)的识别结果,并从这些名称创建单独的数组或列表
  3. 根据您的编程风格
  4. 处理这些,您可以将它们用作常量列表或创建地图

    当您处理识别结果时,我建议将所有结果制成单词,以便您可以将它们与预期答案进行比较。

    %test data
    x=[34,35,36,37,38,39,41,42,43,44,45,46];
    y=[0.33 0.166 0.25 0.33 0.5 0.58 0.66 0.66 0.5 0.58 0.8 0.66];
    
    % sort values
    [~,idx] = sort(y);
    x = x(idx);
    y = y(idx);
    
    % use all values only once. Average the values
    y_unique = unique(y);
    x_unique = zeros(size(y_unique));
    for i = 1:length(y_unique)
       x_unique(i) =  mean(x(y==y_unique(i)));
    end
    
    % test
    interp1(y_unique,x_unique,0.33)
    

    我在我的项目中做了类似的事情,我有命令,我必须识别它们并执行进程。

答案 1 :(得分:0)

您可以使用https://github.com/Simmetrics/simmetrics

例如:

MyPath = "c:\wherever\abc_*.ini"   ' Set the path.
MyName = Dir(MyPath, vbDirectory)   ' Retrieve the first entry.
Do While MyName <> ""   ' Start the loop.
   ' Ignore the current directory and the encompassing directory.
   If MyName <> "." And MyName <> ".." Then
      Debug.Print MyName 
   End If
   MyName = Dir   ' Get next entry.
Loop

此libs还提供了可以使用的其他指标