3

가능한 중복 : 내 말은
Android: Voice Recording and saving audio음성 인식에서 음성 데이터 (예 : mp3 형식)를 취할 수 있습니까?

;

저는 Android에서 음성 인식 클래스를 사용하며 음성 인식에 성공했습니다. 하지만 실제 음성 데이터 대신 단어가 아닌 음성 데이터를 원합니다. 예를 들어 'teacher'이라고 말하면 안드로이드가 선생님에게 말했습니다. 오케이 괜찮지 만 내 목소리에 'teacher'이 포함되어 있습니다. 어디입니까? 나는 그것을 가지고 다른 장소를 저장할 수 있습니까?

나는 텍스트를 음성으로이 클래스를 사용

package net.viralpatel.android.speechtotextdemo; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.content.ActivityNotFoundException; 
import android.content.Intent; 
import android.os.Bundle; 
import android.speech.RecognizerIntent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    protected static final int RESULT_SPEECH = 1; 

    private ImageButton btnSpeak; 
    private TextView txtText; 

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

     txtText = (TextView) findViewById(R.id.txtText); 

     btnSpeak = (ImageButton) findViewById(R.id.btnSpeak); 

     btnSpeak.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       Intent intent = new Intent(
         RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 

       intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US"); 

       try { 
        startActivityForResult(intent, RESULT_SPEECH); 
        txtText.setText(""); 
       } catch (ActivityNotFoundException a) { 
        Toast t = Toast.makeText(getApplicationContext(), 
          "Ops! Your device doesn't support Speech to Text", 
          Toast.LENGTH_SHORT); 
        t.show(); 
       } 
      } 
     }); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

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

     switch (requestCode) { 
     case RESULT_SPEECH: { 
      if (resultCode == RESULT_OK && null != data) { 

       ArrayList<String> text = data 
         .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

       txtText.setText(text.get(0)); 
      } 
      break; 
     } 

     } 
    } 
} 

감사합니다.

+0

참조 : http : // stackoverflow.co.kr/a/10918416/12547 – Kaarel

+0

무엇을 복제합니까? –

+0

나는 미디어 플레이어 클래스와 녹음을 사용하고 싶지 않은 스피치 Gatherer 클래스를 사용하고 싶다. Google api –

답변

2

따라서 Android speech recognition API을 사용하여 사용자가 말한 내용의 오디오와 오디오를 모두 얻으려고합니다. 내가 아는 유일한 해결책은 SpeechRecognizer -class를 사용하는 것입니다. 이렇게하면 시스템에 설치된 음성 인식기와 상호 작용할 수 있지만 UI (마이크 버튼, 오류 메시지 표시 등)를 직접 구현해야합니다. 따라서 보통 RecognizerIntent.ACTION_RECOGNIZE_SPEECH을 사용하는 것보다 조금 더 많은 작업이 필요합니다. 관련 클래스/사용자의 경우에 방법 :

마지막 메서드에 대한 문서에는 이 포함되어 있습니다.이 메서드는이라고 보장 할 수 없으므로 음성 인식 API는 실제로 오디오 캡처를 허용하도록 설계되지 않았습니다. 샘플 속도는 구현에 따라 다릅니다., 즉 오디오를 재생하는 방법을 모르거나 wav에 저장하는 방법조차 모릅니다.

https://stackoverflow.com/a/10918416/12547

이 요약 대답을 참조 :

  • 안드로이드 음성 인식 API 반환
  • 안드로이드 음성 인식 API 하지 않는 MP3하지 않습니다가에 아무것도 쓰지 SD 카드
  • Android 음성 인식 API에 오디오를 바이트 단위로 반환하는 메소드가 포함되어 있습니다. 배열,하지만이 방법을 구현하는 모든 음성 인식 애플 리케이션에 의존 수 없습니다
+0

나는 정말로 이해하지 않는다. 어떻게 파일을 SD 카드에 저장할 수 있습니까? 그리고 어떤 파일? 내 목소리가 포함 된 음성 파일은 어디에 있습니까? –

+1

당신은 거기에서 _byte 배열 _을 얻습니다. 16kHz 16 비트 bigendian 오디오로 해석하여 MP3로 변환하고 SD 카드에 저장하면됩니다. – Kaarel

+1

당신은 나를 이해하지 못합니다. 그 클래스를 사용하고 싶습니다. 미디어 플레이어 기록 기능을 사용하지 않습니다. 나는 그 수업을 사용하고 그것을 사용할 때 나는 ı이 말하는 텍스트를 얻지 만 mp3 나 anotherelse와 같은 음성 데이터를 얻길 원합니다. –