编程语言
首页 > 编程语言> > java – 如何确定在注册期间结束句子的时间?

java – 如何确定在注册期间结束句子的时间?

作者:互联网

我自己写了一组代码来记录我通过麦克风说的内容.
我想了解谷歌在“沉默”时用来停止录音的功能.例如,如果我继续谷歌并按麦克风符号,我可以说我打算寻找什么,但它用什么功能来理解我什么都不说(“沉默”的那一刻)?我想过做一个循环,他们正在记录几个声音帧的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();
}

解决方法:

检查dB的方法很好.然后,您可以使用另一个线程来检查静默,并在找到它时停止主线程.您必须使用自己的Thread实现,以便它可以将TIME作为参数并在静默时停止它:

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;
    }
}

标签:java,eclipse,java-ee,speech-recognition,microphone
来源: https://codeday.me/bug/20190709/1409086.html