안드로이드에서 텍스트 API에 연설을 사용하고 싶지만 대화 상자에서 속도를 늦추고 싶지는 않습니다. 그것들없이 기능을 사용할 수 있습니까?대화 상자를 표시하지 않고 안드로이드의 음성 인식을 사용할 수 있습니까?
답변
음성 인식에 대한 제
The Intent 대화 상자를 표시하고 그것을 보여주는 해제하는 옵션은 없습니다.
음성 인식 기능을 사용하려면 인식을 위해 소리를 Google에 업로드 할 수 있도록 인터넷에 연결되어 있어야합니다.
Google API는 어떻습니까 ?? 오디오를 텍스트로 변환하는 웹 서비스로 존재합니까? 그렇다면 안드로이드의 의도는 무엇입니까 ?? – mobibob
http://stackoverflow.com/a/10200568/679180 – srf
나는 인터넷에 연결하는 것이 잘못되었다고 확신한다. Wi-Fi를 내 기기에서 껐다가 Wi-Fi 모드로 전환 했는데도 여전히 작동했습니다. RecognitionIntent에 FREE_FORM을 사용하면 인터넷이 필요하지 않습니다. – FateNuller
예 가능 :
API의 SpeechRecognizer 클래스를 사용할 수 있습니다. API에 따라 필요에 따라 주 스레드에서 사용되는지, 클래스가 RecognitionListener를 구현하는지 확인하십시오.
private SpeechRecognizer speech;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
speech = SpeechRecognizer.createSpeechRecognizer(this);
speech.setRecognitionListener(this);
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en");
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
this.getPackageName());
speech.startListening(intent);
}
@Override
public void onBeginningOfSpeech()
{
}
@Override
public void onBufferReceived(byte[] arg0)
{
}
@Override
public void onEndOfSpeech()
{
}
@Override
public void onError(int e)
{
}
@Override
public void onEvent(int arg0, Bundle arg1)
{
}
@Override
public void onPartialResults(Bundle arg0)
{
}
@Override
public void onReadyForSpeech(Bundle arg0)
{
}
@Override
public void onResults(Bundle data)
{
ArrayList<String> matches = data.getStringArrayList(
SpeechRecognizer.RESULTS_RECOGNITION);
// Do something useful with the matches =)
// ...
}
@Override
public void onRmsChanged(float arg0)
{
}
음성을 처음부터 인식하고, 음성을 계속 인식하는 방법 .... –
@PradeepSodhi 그걸 pradeep에서 찾아 냈어? 저에게 알려주세요! –
onCreate 메서드 대신 클래스에 SpeechRecognizer 및 SpeechRecognizer를 제공하도록 정의한 경우 speech.startListening (...)을 다시 호출 할 수 있습니다. (나는 더 이상 연설을 사용하지 않으므로 추측 일뿐입니다.) – Knots
이 코드
import java.util.ArrayList;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.ToggleButton;
public class VoiceRecognitionActivity extends Activity implements RecognitionListener {
private TextView returnedText;
private ToggleButton toggleButton;
private ProgressBar progressBar;
private SpeechRecognizer speech = null;
private Intent recognizerIntent;
private String LOG_TAG = "VoiceRecognitionActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voice_recognition);
returnedText = (TextView) findViewById(R.id.textView1);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
toggleButton = (ToggleButton) findViewById(R.id.toggleButton1);
progressBar.setVisibility(View.INVISIBLE);
speech = SpeechRecognizer.createSpeechRecognizer(this);
speech.setRecognitionListener(this);
recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE,"en");
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,this.getPackageName());
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
progressBar.setVisibility(View.VISIBLE);
progressBar.setIndeterminate(true);
speech.startListening(recognizerIntent);
} else {
progressBar.setIndeterminate(false);
progressBar.setVisibility(View.INVISIBLE);
speech.stopListening();
}
}
});
}
@Override
public void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
if (speech != null) {
speech.destroy();
Log.i(LOG_TAG, "destroy");
}
}
@Override
public void onBeginningOfSpeech() {
Log.i(LOG_TAG, "onBeginningOfSpeech");
progressBar.setIndeterminate(false);
progressBar.setMax(10);
}
@Override
public void onBufferReceived(byte[] buffer) {
Log.i(LOG_TAG, "onBufferReceived: " + buffer);
}
@Override
public void onEndOfSpeech() {
Log.i(LOG_TAG, "onEndOfSpeech");
progressBar.setIndeterminate(true);
toggleButton.setChecked(false);
}
@Override
public void onError(int errorCode) {
String errorMessage = getErrorText(errorCode);
Log.d(LOG_TAG, "FAILED " + errorMessage);
returnedText.setText(errorMessage);
toggleButton.setChecked(false);
}
@Override
public void onEvent(int arg0, Bundle arg1) {
Log.i(LOG_TAG, "onEvent");
}
@Override
public void onPartialResults(Bundle arg0) {
Log.i(LOG_TAG, "onPartialResults");
}
@Override
public void onReadyForSpeech(Bundle arg0) {
Log.i(LOG_TAG, "onReadyForSpeech");
}
@Override
public void onResults(Bundle results) {
Log.i(LOG_TAG, "onResults");
ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
String text = "";
for (String result : matches)
text += result + "\n";
returnedText.setText(text);
}
@Override
public void onRmsChanged(float rmsdB) {
Log.i(LOG_TAG, "onRmsChanged: " + rmsdB);
progressBar.setProgress((int) rmsdB);
}
public static String getErrorText(int errorCode) {
String message;
switch (errorCode) {
case SpeechRecognizer.ERROR_AUDIO:
message = "Audio recording error";
break;
case SpeechRecognizer.ERROR_CLIENT:
message = "Client side error";
break;
case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:
message = "Insufficient permissions";
break;
case SpeechRecognizer.ERROR_NETWORK:
message = "Network error";
break;
case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:
message = "Network timeout";
break;
case SpeechRecognizer.ERROR_NO_MATCH:
message = "No match";
break;
case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
message = "RecognitionService busy";
break;
case SpeechRecognizer.ERROR_SERVER:
message = "error from server";
break;
case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
message = "No speech input";
break;
default:
message = "Didn't understand, please try again.";
break;
}
return message;
}
}
activity_voice_recognition.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher" />
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/toggleButton1"
android:layout_marginTop="28dp"
android:paddingLeft="10dp"
android:paddingRight="10dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/progressBar1"
android:layout_centerHorizontal="true"
android:layout_marginTop="47dp" />
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="26dp"
android:text="ToggleButton" />
</RelativeLayout>
에게 AndroidManifest.xml을 시도
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rakesh.voicerecognitionexample"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".VoiceRecognitionActivity"
android:label="@string/title_activity_voice_recognition" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
의
- 1. 안드로이드없이 음성 인식을 위해 Google 서버를 사용할 수 있습니까?
- 2. Show 대화 상자가 대화 상자를 표시하지 않습니다.
- 3. 그래픽 이슈를 표시하지 않고 사용자 정의 대화 상자를 닫으려면 어떻게해야합니까?
- 4. Cocoa WebView에서 인증 대화 상자를 표시하지 않을 수 있습니까?
- 5. 안드로이드의 기본 녹음 음성
- 6. 인쇄 대화 상자를 표시하지 않고 직접 Fastreport를 인쇄하는 방법
- 7. Excel interop : 저장 대화 상자를 표시하지 않고 통합 문서 저장
- 8. 프린터 대화 상자를 표시하지 않고 여러 PDF 파일을 인쇄하십시오.
- 9. 대화 상자에서 대화 상자를 열 수 있습니까?
- 10. Android의 음성 인식을 사용할 때 오디오 파일 저장
- 11. 브라우저의 인증 대화 상자를 표시하지 않음
- 12. MFC : 표시하지 않고 모덜리스 대화 상자 만들기
- 13. 안드로이드의 "voice to Text"대화 상자
- 14. WPF ShowDialog가 대화 상자를 표시하지 않습니다.
- 15. 안드로이드의 음성 메일 (VVM)
- 16. Windows XP에서 C#으로 음성 인식을 어떻게 사용할 수 있습니까? + 앱을 실행하는 모든 PC를 교육해야합니까?
- 17. "응용 프로그램 오류"대화 상자를 사용할 수 있습니까?
- 18. 자바 스크립트에서 두 개의 연속적인 대화 상자를 사용할 수 있습니까?
- 19. 음성 인식을 사용하는 프로그램 작성 ... 어디에서 시작해야합니까?
- 20. 음성 인식기에서 인식을 시작하는 방법은 무엇입니까?
- 21. 대화 상자를 사용할 때 DragAcceptFiles를 사용할 수 없습니다.
- 22. 어떻게 대화 상자를 닫을 수 있습니까?
- 23. 알파 블렌드 대화 상자를 만들 수 있습니까?
- 24. ProgressMonitor 대화 상자를 모달로 만들 수 있습니까?
- 25. 안드로이드의 모든 응용 프로그램에서 사용자 정의 대화 상자를 사용하는 방법
- 26. PHP에서 인쇄 대화 상자를 열지 않고 인쇄
- 27. Java Web Start에서로드 대화 상자를 잠글 수 있습니까?
- 28. PreferenceScreen을 표시하지 않고 DialogPreference를 표시 할 수 있습니까?
- 29. 안드로이드의 기본 검색 창에 자동 완성 기능을 사용할 수 있습니까?
- 30. 아무 버튼도 누르지 않고 BUTTON을 어떻게 사용할 수 있습니까? BlackBerry에서
가능한 중복 [내가 짜증나는 대화하지 않고 음성 인식을 사용할 수있는 방법 안드로이드 폰에서 ] (http://stackoverflow.com/questions/6316937/how-can-i-use-speech-recognition-without-the-annoying-dialog-in-android-phones) –