Điều này có thể thực hiện mà không sửa đổi các API Android không? Tôi đã tìm thấy một bài viết về điều này. Có một nhận xét rằng tôi nên thực hiện các sửa đổi đối với API Android. Nhưng nó không nói cách sửa đổi. Ai có thể cho tôi một số gợi ý về cách làm điều đó không? Cảm ơn!Làm thế nào tôi có thể sử dụng tính năng nhận dạng giọng nói mà không có hộp thoại gây phiền nhiễu trong điện thoại Android
Tôi đã tìm thấy bài viết này; SpeechRecognizer Nhu cầu của anh ấy gần giống như tôi. Đó là một tài liệu tham khảo tốt cho tôi!
Tôi đã giải quyết xong vấn đề này.
Tôi googled một mẫu mã có thể sử dụng from this China website Đây là mã nguồn của tôi
package voice.recognition.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import android.util.Log;
public class voiceRecognitionTest extends Activity implements OnClickListener
{
private TextView mText;
private SpeechRecognizer sr;
private static final String TAG = "MyStt3Activity";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button speakButton = (Button) findViewById(R.id.btn_speak);
mText = (TextView) findViewById(R.id.textView1);
speakButton.setOnClickListener(this);
sr = SpeechRecognizer.createSpeechRecognizer(this);
sr.setRecognitionListener(new listener());
}
class listener implements RecognitionListener
{
public void onReadyForSpeech(Bundle params)
{
Log.d(TAG, "onReadyForSpeech");
}
public void onBeginningOfSpeech()
{
Log.d(TAG, "onBeginningOfSpeech");
}
public void onRmsChanged(float rmsdB)
{
Log.d(TAG, "onRmsChanged");
}
public void onBufferReceived(byte[] buffer)
{
Log.d(TAG, "onBufferReceived");
}
public void onEndOfSpeech()
{
Log.d(TAG, "onEndofSpeech");
}
public void onError(int error)
{
Log.d(TAG, "error " + error);
mText.setText("error " + error);
}
public void onResults(Bundle results)
{
String str = new String();
Log.d(TAG, "onResults " + results);
ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
for (int i = 0; i < data.size(); i++)
{
Log.d(TAG, "result " + data.get(i));
str += data.get(i);
}
mText.setText("results: "+String.valueOf(data.size()));
}
public void onPartialResults(Bundle partialResults)
{
Log.d(TAG, "onPartialResults");
}
public void onEvent(int eventType, Bundle params)
{
Log.d(TAG, "onEvent " + eventType);
}
}
public void onClick(View v) {
if (v.getId() == R.id.btn_speak)
{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5);
sr.startListening(intent);
Log.i("111111","11111111");
}
}
}
Hãy chắc chắn để xóa các Logs gây phiền nhiễu sau khi gỡ lỗi!
Chắc chắn có thể làm, như tôi đã thấy các ứng dụng khác làm điều đó (Giọng nói vô cùng) nhưng đối với cách, tôi không có một đầu mối.Tôi tưởng tượng bạn có thể bắt đầu bằng cách tải về nguồn Android và kiểm tra trong api nơi giọng nói, và sau đó thử nghiệm mở rộng ... – Eric
như được ghi nhận bởi Femi, hãy chắc chắn để có ' ' trong tệp AndroidManifest.xml của bạn nếu không SpeechRecognizer sẽ không nhận bất kỳ âm thanh nào –
nommer