English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
오늘 인터넷에서 음성 인식을 구현하는 예제를 찾아서 테스트했습니다. 개인적으로 매우 재미있게 느껴졌기 때문에, 코드를 공유해 보려고 합니다:
Android에서는 RecognizerIntent를 통해 음성 인식을 수행합니다. 사실 코드는 매우 간단하지만 설정을 찾지 못하면 ActivityNotFoundException 예외가 발생합니다. 따라서 이 예외를 잡아야 합니다. 또한, 음성 인식은 모의 환경에서 테스트할 수 없습니다. 음성 인식은 Google 클라우드 데이터에 접근하기 때문에, 모바일의 네트워크가 꺼져 있으면 음성 인식을 수행할 수 없습니다! 모바일의 네트워크를 꼭 켜야 합니다. 모바일이 음성 인식 기능이 없다면, 인식을 사용할 수 없습니다!
다음은 RecognizerIntentActivity에 있는 코드입니다:
public class RecognizerIntentActivity extends Activity { private Button btnReconizer; private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.reconizer); btnReconizer=(Button) this.findViewById(R.id.btnRecognizer); btnReconizer.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub try{ //음성 인식 모드를 Intent를 통해 전달하고 음성을 시작합니다 Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); //언어 모델과 자유 모드의 음성 인식 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //음성 시작을 알립니다 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "음성을 시작하십시오"); //음성 인식을 시작합니다 startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); }catch (Exception e) { // TODO: 예외 처리 e.printStackTrace(); Toast.makeText(getApplicationContext(), "음성 장치를 찾을 수 없습니다", 1).show(); } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub //구글에서 얻은 데이터를 가져오는 콜백 if(requestCode==VOICE_RECOGNITION_REQUEST_CODE && resultCode==RESULT_OK){ //음성의 문자를 얻습니다 ArrayList<String> results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); String resultString=""; for(int i=0;i<results.size();i++{ resultString+=results.get(i); } Toast.makeText(this, resultString, 1).show(); } super.onActivityResult(requestCode, resultCode, data); } }
그의 주요 원리는 음성을 구글 클라우드에 전송하고, 클라우드에서 처리하고, 필요한 데이터를 클라이언트로 전송하는 것입니다.
맨 마지막으로, manifest에 네트워크 접근 권한을 추가하지 마세요:
<uses-permission android:name="android.permission.INTERNET" />
실행 후 효과:
오디오 시작 버튼을 클릭한 후 말하기 시작하세요 (필요 시 모바일의 네트워크를 열어야 합니다):
클라우드 데이터를 기다리는 중입니다. 저는2G의 카드를 기다렸지만 여전히 로드되지 않았습니다. 회사에 돌아가 회사의 와이파이를 사용해 시도해 보세요. 클라우드 데이터를 받으면 토스트 방식으로 출력됩니다.
이것이 안드로이드 음성 인식 기술 자료 정리입니다. 이후 추가 자료를 계속 추가할 것입니다. 많은 지원에 감사합니다!
고지사항: 본문의 내용은 인터넷에서 수집된 것으로, 저작권자는 모두 원저작자이며, 인터넷 사용자가 자발적으로 기여하고 자체로 업로드한 것으로, 웹사이트는 소유권을 가지지 않으며, 인공編集을 거치지 않았으며, 관련 법적 책임을 부담하지 않습니다. 저작권 문제가 있으면 notice#w에 이메일을 보내 주세요.3codebox.com에 (메일을 보내는 경우 #을 @으로 변경하십시오) 신고를 하시고 관련 증거를 제공하시면, 해당 내용이 확인되면 즉시 해당 내용을 삭제할 것입니다.