比较语音中的文本和文本视图中的文本

时间:2019-02-04 14:17:14

标签: android speech-to-text

应用简要说明

用户看到带有单词的TextView。用户将单击一个按钮,该按钮将触发“语音转文本” API,并说出TextView上给出的单词。现在,我需要将语音中的文本与textview中的文本进行匹配。

假设文本视图中的文本为“你好,你好”

从语音到文本Api的文本是“你好,你好”

我知道我们可以像这样

if (string1.equals(string2)){

}

但是我不想像整个字符串一样匹配。我想一一匹配字符串的每个字符。

如果字符匹配,则匹配字符的颜色为绿色,否则为红色。

3 个答案:

答案 0 :(得分:0)

退房并想出了类似这样的东西:

String viewText = textview.getText();
String spokenText; //define yourself

for (int i = 0; i <= viewText.length(); i++) {
    char letter = viewText.charAt(i);
    char spokenLetter = spokenText.charAt(i);
    if(letter==spokenLetter) {
       //proceed further
    }
    else { 
        // return false
    }
}

答案 1 :(得分:0)

您可以在xml中使用水平方向制作一个空的线性布局,并在不同的textView中进行比较后动态添加每个字母,例如:

LinearLayout layout = (LinearLayout) findViewById(R.id.your_linear_layout);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int i = 0;
for(char a: string1.toCharArray()){
char b = string2.charAt(i);
TextView tv = new TextView(this);
if(a == b){
tv.setText(String.valueOf(a);
tv.setColor(Color.GREEN);
tv.setLayoutParams(params);
layout.addView(tv);
}else{
tv.setText(String.valueOf(a);
tv.setColor(Color.RED);
tv.setLayoutParams(params);
layout.addView(tv);
}
i++;
}

答案 2 :(得分:-1)

您可以遍历一个字符串并检查每个字符。

using System;

class Program
{
    static void Main()
    {
        const string s = "peace";
        foreach (char c in s)
        {
            Console.WriteLine(c);
        }
        for (int i = 0; i < s.Length; i++)
        {
            Console.WriteLine(s[i]);
        }
    }
}