mmdagent_snowboy.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:Alexa_MMDAgent 作者: jianmliu 项目源码 文件源码
def __init__(self, decoder_model,
                 resource=RESOURCE_FILE,
                 sensitivity=[],
                 audio_gain=1):
        def audio_callback(in_data, frame_count, time_info, status):
            self.ring_buffer.extend(in_data)
            play_data = chr(0) * len(in_data)
            return play_data, pyaudio.paContinue

        self.decoder_model = decoder_model
        tm = type(decoder_model)
        ts = type(sensitivity)
        if tm is not list:
            decoder_model = [decoder_model]
        if ts is not list:
            sensitivity = [sensitivity]
        model_str = ",".join(decoder_model)

        self.detector = snowboydetect.SnowboyDetect(
            resource_filename=resource, model_str=str(model_str))
        self.detector.SetAudioGain(audio_gain)
        self.num_hotwords = self.detector.NumHotwords()

        if len(decoder_model) > 1 and len(sensitivity) == 1:
            sensitivity = sensitivity*self.num_hotwords
        if len(sensitivity) != 0:
            assert self.num_hotwords == len(sensitivity), \
                "number of hotwords in decoder_model (%d) and sensitivity " \
                "(%d) does not match" % (self.num_hotwords, len(sensitivity))
        sensitivity_str = ",".join([str(t) for t in sensitivity])
        if len(sensitivity) != 0:
            self.detector.SetSensitivity(sensitivity_str);

        self.ring_buffer = RingBuffer(
            self.detector.NumChannels() * self.detector.SampleRate() * 5)
        self.audio = pyaudio.PyAudio()

        self.stream_in = self.audio.open(
                                        input=True,
                                        output=True,
                                        format=self.audio.get_format_from_width(self.detector.BitsPerSample() / 8),
                                        channels=self.detector.NumChannels(),
                                        rate=self.detector.SampleRate(),
                                        frames_per_buffer=2048,
                                        #input_device_index=1,
                                        #output_device_index=0,
                                        stream_callback=audio_callback)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号