Android 多语言的语音到文本转换

Android 多语言的语音到文本转换,android,speech-recognition,Android,Speech Recognition,我正在研究语音识别,我需要用多种语言来做 若用户使用印地语或任何其他语言说话,那个么我需要在文本视图中显示它。 现在它对英语非常有效 根据用户选择,我需要为多种语言做什么 请帮帮我,谢谢 这是我的密码 public class MainActivity extends AppCompatActivity { private static final int REQ_CODE_SPEECH_INPUT = 100; private TextView mVoiceInputTv; private

我正在研究语音识别,我需要用多种语言来做

若用户使用印地语或任何其他语言说话,那个么我需要在文本视图中显示它。 现在它对英语非常有效

根据用户选择,我需要为多种语言做什么

请帮帮我,谢谢

这是我的密码

 public class MainActivity extends AppCompatActivity {

private static final int REQ_CODE_SPEECH_INPUT = 100;
private TextView mVoiceInputTv;
private ImageButton mSpeakBtn;
private TextToSpeech t1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mVoiceInputTv = (TextView) findViewById(R.id.voiceInput);
    mSpeakBtn = (ImageButton) findViewById(R.id.btnSpeak);
    mSpeakBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            startVoiceInput();
        }
    });
}

private void startVoiceInput() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Hello, How can I help you?");
    try {
        startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
    }
    catch (ActivityNotFoundException a) {

    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case REQ_CODE_SPEECH_INPUT: {
            if (resultCode == RESULT_OK && null != data) {
                ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

                if(userlanguage.equals("English")){
                    mVoiceInputTv.setText(result.get(0));
                }
                else if(userlanguage.equals("Hindi")){
                    face = Typeface.createFromAsset(getAssets(),"fonts/DroidHindi.ttf");
                    mVoiceInputTv.setTypeface(face);
                    mVoiceInputTv.setText(result.get(0));
                }
                else if(userlanguage.equals("Marathi")){
                    face = Typeface.createFromAsset(getAssets(),"fonts/Marathi.ttf");
                    mVoiceInputTv.setTypeface(face);
                    mVoiceInputTv.setText(result.get(0));
                }
                else if(userlanguage.equals("Gujarati")){
                    face = Typeface.createFromAsset(getAssets(),"fonts/Gujarati.ttf");
                    mVoiceInputTv.setTypeface(face);
                    mVoiceInputTv.setText(result.get(0));
                }
            }
            break;
        }
    }
  }
}
public类MainActivity扩展了AppCompatActivity{
专用静态最终输入要求代码语音输入=100;
私有文本视图mVoiceInputTv;
专用图像按钮mSpeakBtn;
私有文本到语音t1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mvoiceInputV=(TextView)findViewById(R.id.voiceInput);
mSpeakBtn=(ImageButton)findViewById(R.id.btnSpeak);
mSpeakBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
startVoiceInput();
}
});
}
私有void startVoiceInput(){
意向意向=新意向(识别意向、行动、识别言语);
intent.putExtra(RecognizerIntent.EXTRA语言模型,RecognizerIntent.LANGUAGE模型自由形式);
intent.putExtra(RecognizerIntent.EXTRA_语言,Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_提示符,“您好,有什么可以帮您的吗?”);
试一试{
startActivityForResult(意图、请求代码、语音输入);
}
捕获(ActivityNotFoundException a){
}
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
开关(请求代码){
案例请求代码语音输入:{
if(resultCode==RESULT\u OK&&null!=数据){
ArrayList结果=data.getStringArrayListExtra(RecognizerIntent.EXTRA_结果);
if(userlanguage.equals(“英语”)){
mVoiceInputTv.setText(result.get(0));
}
else if(userlanguage.equals(“印地语”)){
face=Typeface.createFromAsset(getAssets(),“font/DroidHindi.ttf”);
mvoiceInputv.setTypeface(面);
mVoiceInputTv.setText(result.get(0));
}
else if(userlanguage.equals(“Marathi”)){
face=Typeface.createFromAsset(getAssets(),“font/Marathi.ttf”);
mvoiceInputv.setTypeface(面);
mVoiceInputTv.setText(result.get(0));
}
else if(userlanguage.equals(“古吉拉特邦”)){
face=Typeface.createFromAsset(getAssets(),“font/Gujarati.ttf”);
mvoiceInputv.setTypeface(面);
mVoiceInputTv.setText(result.get(0));
}
}
打破
}
}
}
}

第1步。您需要根据语言选择更改区域设置 intent.putExtra(RecognizerIntent.EXTRA_语言,Locale.CHINESE

第二步。将语音文本保存到字符串文件中。并使用getString方法。通过这种方式,您可以根据语言使用字符串

此代码可用于从不同的值文件夹中获取不同的语言字符串

    Configuration conf = getResources().getConfiguration();
    conf.locale = new Locale("pl");
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    Resources resources = new Resources(getAssets(), metrics, conf);
    String str = resources.getString(id);

第一步。您需要根据语言选择更改区域设置 intent.putExtra(RecognizerIntent.EXTRA_语言,Locale.CHINESE

第二步。将语音文本保存到字符串文件中。并使用getString方法。通过这种方式,您可以根据语言使用字符串

此代码可用于从不同的值文件夹中获取不同的语言字符串

    Configuration conf = getResources().getConfiguration();
    conf.locale = new Locale("pl");
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    Resources resources = new Resources(getAssets(), metrics, conf);
    String str = resources.getString(id);

谷歌的服务器目前支持英语、汉语和日语。web搜索模式有三种语言版本,而free-form主要针对英语进行了优化


设置额外语言的值。请参见

谷歌的服务器目前支持英语、普通话和日语。web搜索模式有三种语言版本,而free-form主要针对英语进行了优化


设置额外语言的值。请参见

您将为不同的语言创建不同的活动

假设您选择印地语,现在它将转到印地语活动。。像这样

代码:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
另一项活动:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "hi");

我希望这会起作用……

您将为不同的语言创建不同的活动

假设您选择印地语,现在它将转到印地语活动。。像这样

代码:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
另一项活动:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "hi");

我希望这能起作用…

我得到了语音文本字符串,但也需要按照用户语言打印,例如,如果用户使用中文,那么在标签上打印时也只需要中文。当前仅以英文显示。是的,您需要为不同语言添加不同的值文件夹,并使用getString(R.string.speechText)但这里我需要在每个文件夹中设置一些不同语言的字符串,对吗?我不想要这个。不管用户说什么,我都需要打印那个。@Harmindar Singhi有语音文本字符串,但也需要按照用户语言打印,例如,如果用户使用中文,则在标签上打印时也只需要中文。当前仅以英文显示。是的,您需要为不同的语言添加不同的值文件夹,并使用getString(R.string.speechText),但我需要在每个文件夹中设置一些不同语言的字符串,对吗?我不想要这个。无论用户说什么,我都需要打印出来。@Harmindar Singhi做了类似的事情,但我不知道这是不是正确的方式?我做了类似的事情,但我不知道这是不是正确的方式?