사용자로부터 명령을 받아 실시간으로 작성하는 앱을 만들고 있습니다. 내가 취할 수있는 최선의 선택은 무엇인가? 스핑크스와 같은 타사 소프트웨어 또는 내장 (안드로이드 음성 인식)을 사용해야합니까?음성 인식 Android 앱
두 번째로 내가 말하는 순간에 쓰는 것처럼 실시간으로 작성하고 싶습니다.
사용자로부터 명령을 받아 실시간으로 작성하는 앱을 만들고 있습니다. 내가 취할 수있는 최선의 선택은 무엇인가? 스핑크스와 같은 타사 소프트웨어 또는 내장 (안드로이드 음성 인식)을 사용해야합니까?음성 인식 Android 앱
두 번째로 내가 말하는 순간에 쓰는 것처럼 실시간으로 작성하고 싶습니다.
Android 음성 인식 기능을 사용해야합니다. 특히 팝업 대화 상자가 표시되지 않도록 SpeechRecognier API를 사용해야합니다.
또한 SpeechRecognizer가 onPartialResults() 내에있는 모든 것을 반환 할 것으로 기대하지 마십시오. 그것은 거의하지 않습니다.
스핑크스를 사용해 볼 수도 있지만 다른 개발자가 Android에서 실행하는 데 어려움이있는 것 같습니다. 즉, 인터넷 연결없이 앱을 실행하려는 경우 스핑크스 만 선택할 수 있습니다.
public void recognizeDirectly(Intent recognizerIntent)
{
// SpeechRecognizer requires EXTRA_CALLING_PACKAGE, so add if it's not
// here
if (!recognizerIntent.hasExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE))
{
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
"com.dummy");
}
SpeechRecognizer recognizer = getSpeechRecognizer();
recognizer.startListening(recognizerIntent);
}
@Override
public void onResults(Bundle results)
{
Log.d(TAG, "full results");
receiveResults(results);
}
@Override
public void onPartialResults(Bundle partialResults)
{
Log.d(TAG, "partial results");
receiveResults(partialResults);
}
/**
* common method to process any results bundle from {@link SpeechRecognizer}
*/
private void receiveResults(Bundle results)
{
if ((results != null)
&& results.containsKey(SpeechRecognizer.RESULTS_RECOGNITION))
{
List<String> heard =
results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
float[] scores =
results.getFloatArray(SpeechRecognizer.CONFIDENCE_SCORES);
receiveWhatWasHeard(heard, scores);
}
}
@Override
public void onError(int errorCode)
{
recognitionFailure(errorCode);
}
/**
* stop the speech recognizer
*/
@Override
protected void onPause()
{
if (getSpeechRecognizer() != null)
{
getSpeechRecognizer().stopListening();
getSpeechRecognizer().cancel();
getSpeechRecognizer().destroy();
}
super.onPause();
}
/**
* lazy initialize the speech recognizer
*/
private SpeechRecognizer getSpeechRecognizer()
{
if (recognizer == null)
{
recognizer = SpeechRecognizer.createSpeechRecognizer(this);
recognizer.setRecognitionListener(this);
}
return recognizer;
}
// other unused methods from RecognitionListener...
@Override
public void onReadyForSpeech(Bundle params)
{
Log.d(TAG, "ready for speech " + params);
}
@Override
public void onEndOfSpeech()
{
}
gregm 잘하지만 질문의 주 "실시간으로 쓰기"부분은 대답하지 않은 : 여기
는 SpeechRecognizer를 사용해야합니다 코드의 잘린입니다. 나intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
경고 작동
의도에 여분의 추가 : 당신은 당신이 다시 결과를 얻는 부분에 관심을 나타 내기 위해 여분을 추가하기 만하면 새로운 물건을 반환하지 않는 부분 만 또한 이전의 것. 그래서 당신은 스스로 차이점에 대한 점검을 구현해야합니다 ...
고맙습니다.하지만 안드로이드 프로그래밍에 능숙하지 않습니다. 설명해주십시오.이 코드를 구현하는 방법은 무엇입니까? 대화가 나타나는 음성 인식을위한 일반 코드를 구현했습니다.이 코드로 바꾸는 방법은 무엇입니까? 미리 감사드립니다. – Shah
대화 버전에 사용한 의도와 동일한 인 텐트를 사용하고 대신 내 recognDirectly 메서드를 호출하십시오. 음성 인식의 결과를 처리하려면 receiveWhatWasHeard() 및 recognitionFailure()도 구현해야합니다. – gregm
고마워요. 선생님 .. 그 말을 듣고 기뻐요. 나는 쓰기 방향으로 일하고있었습니다. 내 앱의 첫 번째 작업은 지금 완료되었습니다. 당신 덕분에 :) – Shah