2013-07-09 2 views
4

나는 마이크를 통해 말하는 것을 녹음하는 코드를 독자적으로 작성했습니다. "침묵"이있을 때 Google이이 녹음을 중지하는 데 사용하는 기능을 알고 싶습니다. 예를 들어 Google에 가서 마이크 기호를 누르면 내가 무엇을 찾을 계획인지 말할 수 있지만 아무 말도하지 않는 순간을 이해하는 데 사용되는 기능은 무엇입니까 ('침묵'의 순간)? 몇 개의 사운드 프레임 중 일부 dB 또는 RMS를 녹음하는주기를 생각해 보았습니다. 비교하면 "조용 함"이 있는지 이해할 수 있습니다. 지금까지 시간은 정적입니다.등록하는 동안 문장을 끝내는 시간을 결정하는 방법은 무엇입니까?

public static void main(String[] args) { 
    final Main REGISTRAZIONE = new Main(); 

    Thread TIME = new Thread(new Runnable() { 

     public void run() { 
      try { 
       Thread.sleep(RECORD_TIME); 
      } catch (InterruptedException ex) { 
       ex.printStackTrace(); 
      } 
      REGISTRAZIONE.finish(); 
     } 
    }); 
    TIME.start(); 
    REGISTRAZIONE.start(); 
} 

답변

1

dB 확인 방법이 좋습니다. 그런 다음 다른 스레드를 사용하여 묵음을 확인하고 주 스레드가 발견되면 중지 할 수 있습니다. 당신은 침묵이있을 때 그것을 매개 변수로 시간을 중지 할 수 있도록 스레드 당신 자신의 구현을 사용할 수 있습니다

새로운 myThread (TIME) 이클립스 말했다 = myThread 피니셔에 오류가
public class Recorder { 
    static Long RECORD_TIME = 100000L; //or whatever time you use 

    public static void main(String[] args) { 
     final Main REGISTRAZIONE = new Main(); 

     Thread TIME = new Thread(new Runnable() { 
      public void run() { 
       try { 
        Thread.sleep(RECORD_TIME); 
       } catch (InterruptedException ex) { 
        ex.printStackTrace(); 
       } 
       REGISTRAZIONE.finish(); 
      } 
     }); 
     TIME.start(); 

     myThread finisher = new myThread(TIME); 
     finisher.start(); 
     REGISTRAZIONE.start(); 
    } 
} 

class myThread extends Thread implements Runnable { 
    private Thread TIME; 

    public myThread(Thread TIME) { 
     this.TIME = TIME; 
    } 

    public void run() { 
     while (!silence()) { 
      // do nothing 
     } 
     TIME.interrupt(); 
    } 

    private boolean silence() { 
     //record and calculate the dB volume and compare to some level 
     return true; 
    } 
} 
+0

=> 생성자 set.myThread (Thread)가 정의되지 않았습니다 – NPLS

+0

게시 한 코드를 복사 했습니까? –

+0

네, 왜요? ........... – NPLS

관련 문제