1import pkg_resources
2
3import _webrtcvad
4
5__author__ = "John Wiseman jjwiseman@gmail.com"
6__copyright__ = "Copyright (C) 2016 John Wiseman"
7__license__ = "MIT"
8__version__ = pkg_resources.get_distribution('webrtcvad').version
9
10
11class Vad(object):
12    def __init__(self, mode=None):
13        self._vad = _webrtcvad.create()
14        _webrtcvad.init(self._vad)
15        if mode is not None:
16            self.set_mode(mode)
17
18    def set_mode(self, mode):
19        _webrtcvad.set_mode(self._vad, mode)
20
21    def is_speech(self, buf, sample_rate, length=None):
22        length = length or int(len(buf) / 2)
23        if length * 2 > len(buf):
24            raise IndexError(
25                'buffer has %s frames, but length argument was %s' % (
26                    int(len(buf) / 2.0), length))
27        return _webrtcvad.process(self._vad, sample_rate, buf, length)
28
29
30def valid_rate_and_frame_length(rate, frame_length):
31    return _webrtcvad.valid_rate_and_frame_length(rate, frame_length)
32