class SmartSpeaker(): def __init__(self): self.interrupted = False self.model = "snowboy.pmdl" signal.signal(signal.SIGINT, self.signal_handler) self.detector = snowboydecoder.HotwordDetector(self.model, sensitivity=0.42) print('Listening... Press Ctrl+C to exit') self.robot = Robot() self.music_player = self.robot.get_music_player() self.player = Player() def signal_handler(self, signal, frame): self.interrupted = True def interrupt_callback(self): return self.interrupted def detected_callback(self): self.music_player.pause() self.player.play_ding() def speeched_callback(self, fname): self.player.play_dong() self.robot.process(fname) sleep(1) self.music_player.cont() def run(self): self.detector.start(detected_callback=self.detected_callback, speeched_callback=self.speeched_callback, interrupt_check=self.interrupt_callback, sleep_time=0.03)
class SmartSpeaker(): # 初始化 def __init__(self): self.interrupted = False self.model = "嘿小二.pmdl" # 使用的语音模型 signal.signal(signal.SIGINT, self.signal_handler) # 捕获ctrl+c self.detector = snowboydecoder.HotwordDetector( self.model, sensitivity=0.5) # 设置语音模型与敏感度 print('Listening... Press Ctrl+Z to exit') self.robot = Robot() # 创建应用模块 self.music_player = self.robot.get_music_player() # 创建音乐播放模块 self.player = Player() # 触发响应词叮咚播放 def signal_handler(self, signal, frame): self.interrupted = True def interrupt_callback(self): return self.interrupted def detected_callback(self): self.music_player.pause() # 检测到人声时音乐暂停 self.player.play_ding() # 触发 叮 def speeched_callback(self, fname): self.player.play_dong() # 检测时间到后触发 咚 self.robot.process(fname) # 将收到的语音传给应用模块执行相应的操作 sleep(1) # 等待片刻 self.music_player.cont() # 继续播放音乐 # 启动机器人 def run(self): self.detector.start(detected_callback=self.detected_callback, speeched_callback=self.speeched_callback, interrupt_check=self.interrupt_callback, sleep_time=0.03)
class SmartSpeaker(): # 初始化 def __init__(self): self.interrupted = False # 读取配置 config_file = 'config.yaml' if os.path.exists(config_file) == False: print('【警告】配置文件不存在') return f = open('config.yaml') config = yaml.load(f) model_name = config.get('name', 'snowboy') if ['snowboy','alexa'].count(model_name) > 0: model_name = model_name + '.umdl' else: model_name = model_name + '.pmdl' self.model = "唤醒词/" + model_name # 使用的语音模型 print('【唤醒词文件】' + self.model) if os.path.exists(self.model) == False: print('【警告】唤醒词文件不存在') return signal.signal(signal.SIGINT, self.signal_handler) # 捕获ctrl+c self.detector = snowboydecoder.HotwordDetector(self.model, sensitivity=0.5) # 设置语音模型与敏感度 print('Listening... Press Ctrl+Z to exit') self.robot = Robot(config) # 创建应用模块 self.player = Player() # 触发响应词叮咚播放 def signal_handler(self, signal, frame): self.interrupted = True def interrupt_callback(self): return self.interrupted def detected_callback(self): self.robot.hass_api('events/voice_assistant', {'type': 'ding'}) self.player.play_ding() # 触发 叮 def speeched_callback(self, fname): self.player.play_dong() # 检测时间到后触发 咚 self.robot.process(fname) # 将收到的语音传给应用模块执行相应的操作 # sleep(1) # 等待片刻 self.robot.hass_api('events/voice_assistant', {'type': 'dong'}) # 启动机器人 def run(self): self.detector.start(detected_callback=self.detected_callback, speeched_callback=self.speeched_callback, interrupt_check=self.interrupt_callback, sleep_time=0.03)