2016-10-23 3 views
1

텍스트 및 녹음 된 오디오가 포함 된 앱을 개발 중입니다 (페르시아어 - 페르시아어). 이 두 가지를 서로 동기화하는 API가 있습니까? 오디오가 재생 될 때 텍스트를 강조 표시 할 수있는 방법이 있습니까?Android 동기화 오디오 (텍스트 포함)

답변

0

특정 기능과 비슷하기 때문에 standart API는 없다고 생각합니다. 그것의 전체 구현을 제공하는 것은 매우 광범위 할 것이지만 나는 그것이 좋은 질문이라고 생각하기 때문에 연구 방향을 제시 할 수 있음에도 불구하고.

각 오디오 파일마다 srt과 같은 유형의 자막 파일을 만들어야합니다. 여기에는 필독 가능한 단어가 오디오의 발음 시간과 매핑됩니다. 그 후에 응용 프로그램에 parse that file을 입력하여 단어 기간을 Map으로 만들어야합니다. 결과적으로 MediaPlayer 콜백을 사용하면 오디오 시간에 따라 텍스트를 강조 표시하는 데 문제가되지 않습니다. 이 솔루션을 사용하면 자막이있는 오디오 파일을 앱에 동적으로 추가 할 수 있습니다. 물론 이러한 자막을 응용 프로그램에 직접 하드 코딩하고 이러한 유연성이 필요하지 않은 경우 조금 복잡한 구문 분석 프로세스를 피할 수 있습니다.

+0

데이터가 너무 큽니다. 이것은 많은 시간이 걸릴 것입니다 –

+0

@alirezaarvandi 그래서 [자막 자동 생성] (http://softwarerecs.stackexchange.com/questions/4319/how-to-create-automatic-subtitles)을 시도해보고 편집 할 수 있습니다. 그러나 약간 까다로울 수 있습니다. 불행히도이 기능을 거부하는 것 외에는 다른 옵션이 없습니다. 런타임에는 음성 인식도 옵션이 아닙니다. 짧은 시간 동안 만 실행되어야하며 뛰어난 기능을 발휘하지 못하기 때문입니다. 2016 년 생각하지 않음 – Beloo

0

나는 그 질문에 대답하기에는 너무 늦었다 고 생각한다. 또한 매우 어렵고 시간이 많이 걸리지 만, 오디오 1, 오디오 2, 오디오 3 등의 여러 오디오가 있다면 당신을 제안한다. Mediaplayer의 루프를 사용하면 [배열에있는 경우] 텍스트를 기록하여 텍스트를 강조 표시 할 수 있습니다. 예를 들어, 텍스트 1 [배열]이면 audio1을 재생합니다. 다음과 같이 listview에서 구현합니다.

 mPlayer.start(); 
      a++; 
      z=1; 
      mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       public void onCompletion(MediaPlayer mp) { 
        if (a!=b+1) { 
         if(mPlayer != null) { 
          if(mPlayer.isPlaying()) { 
           mPlayer.stop(); 
          } 
          mPlayer.reset(); 
         } 
         try { 
          mPlayer.setDataSource("/mnt/sdcard/audio/aya(" + a + ").mp3"); 
          mPlayer.prepare(); 
          quranlst.setFocusableInTouchMode(true); 
          quranlst.setSelection(z); 
          quranlst.requestFocus(); 
         quranlst.getChildAt(z).setBackgroundColor(Color.WHITE); 




         } catch (Exception e) { 
          e.printStackTrace(); 
         } 

         mPlayer.start(); 

         a++; 
         z++; 

여기서 z는 텍스트 위치입니다. 희망이 당신에게 아이디어를 제공합니다.