Python中的语音或无语音检测

我正在写一个能识别语音的程序。 它所做的是记录来自麦克风的音频并使用Sphinx将其转换为文本。 我的问题是我只想在用户说出某些内容时才开始录制音频。

我通过从麦克风读取音频电平并仅在电平高于特定值时进行记录来进行试验。 但它不是那么有效。 程序每当检测到任何响亮的声音时就开始录制。 这是我使用的代码

import audioop
import pyaudio as pa
import wav

class speech():
    def __init__(self):
        # soundtrack properties
        self.format = pa.paInt16
        self.rate = 16000
        self.channel = 1
        self.chunk = 1024
        self.threshold = 150
        self.file = 'audio.wav'

        # intialise microphone stream
        self.audio = pa.PyAudio()
        self.stream = self.audio.open(format=self.format,
                                  channels=self.channel,
                                  rate=self.rate,
                                  input=True,
                                  frames_per_buffer=self.chunk)


    def record(self)
        while True:
            data = self.stream.read(self.chunk)
            rms = audioop.rms(data,2) #get input volume
            if rms>self.threshold: #if input volume greater than threshold
                break

        # array to store frames
        frames = []
        # record upto silence only
        while rms>threshold:
            data = self.stream.read(self.chunk)
            rms = audioop.rms(data,2)
            frames.append(data)

        print 'finished recording.... writing file....'
        write_frames = wav.open(self.file, 'wb')
        write_frames.setnchannels(self.channel)
        write_frames.setsampwidth(self.audio.get_sample_size(self.format))
        write_frames.setframerate(self.rate)
        write_frames.writeframes(''.join(frames))
        write_frames.close()

有没有一种方法可以区分Python中的人声和其他噪声? 希望有人能找到我一个解决方案。


我认为你的问题在于,你现在试图在没有对演讲的认可的情况下进行录音,因此它不会被区分 - 可识别的演讲是在认可之后给出有意义的结果的任何事情 - 所以赶上22.你可以通过寻找开场关键词。 您还可以根据人耳和电话公司的语音频率范围进行过滤,并且您可以查看标记空间比例 - 我相信有一些出版物可以回溯但注意 - 它因语言而异。 快速Google可以提供丰富的信息。 你也可能会发现这篇文章很有趣。


我认为你正在寻找的是VAD(语音活动检测)。 VAD可用于预处理ASR的语音。 下面是一些VAD链接实现的开源项目。 愿它帮助你。


这是使用VAD库的示例脚本。 https://github.com/wiseman/py-webrtcvad/blob/master/example.py

链接地址: http://www.djcxy.com/p/34401.html

上一篇: Speech or no speech detection in Python

下一篇: Unguided speech to text conversion