Пример #1
0
def trigger_process(trigger):
	if event_commands['pre_interaction']:
		subprocess.Popen(event_commands['pre_interaction'], shell=True, stdout=subprocess.PIPE)

	if player.is_playing():
		player.stop()

	if trigger.voice_confirm:
		player.play_speech(resources_path + 'alexayes.mp3')

	# clean up the temp directory
	if not debug:
		for some_file in os.listdir(tmp_path):
			file_path = os.path.join(tmp_path, some_file)
			try:
				if os.path.isfile(file_path):
					os.remove(file_path)
			except Exception as exp: # pylint: disable=broad-except
				logger.warning(exp)

	force_record = None
	if trigger.event_type in triggers.types_continuous:
		force_record = (trigger.continuous_callback, trigger.event_type in triggers.types_vad)

	capture.silence_listener(force_record=force_record)
	alexa_speech_recognizer()

	triggers.enable()

	if event_commands['post_interaction']:
		subprocess.Popen(event_commands['post_interaction'], shell=True, stdout=subprocess.PIPE)
Пример #2
0
def trigger_process(trigger, voice_command):

    if player.is_playing():
        player.stop()

    # clean up the temp directory
    if not debug:
        for some_file in os.listdir(tmp_path):
            file_path = os.path.join(tmp_path, some_file)
            try:
                if os.path.isfile(file_path):
                    os.remove(file_path)
            except Exception as exp: # pylint: disable=broad-except
                logger.warning(exp)

    if event_commands['pre_interaction']:
        subprocess.Popen(event_commands['pre_interaction'], shell=True, stdout=subprocess.PIPE)

    force_record = None
    if trigger.event_type in triggers.types_continuous:
        force_record = (trigger.continuous_callback, trigger.event_type in triggers.types_vad)

    ### Assistant Override
    if not assistant_handler(voice_command):
        if trigger.voice_confirm:
            player.play_speech(resources_path + 'alexayes.mp3')
        audio_stream = capture.silence_listener(force_record=force_record)
        alexa_speech_recognizer(audio_stream)
    ###

    triggers.enable()

    if event_commands['post_interaction']:
        subprocess.Popen(event_commands['post_interaction'], shell=True, stdout=subprocess.PIPE)
Пример #3
0
def trigger_process(trigger):
    if player.is_playing():
        player.stop()

    # clean up the temp directory
    if not debug:
        for some_file in os.listdir(tmp_path):
            file_path = os.path.join(tmp_path, some_file)
            try:
                if os.path.isfile(file_path):
                    os.remove(file_path)
            except Exception as exp:  # pylint: disable=broad-except
                logger.warning(exp)

    if trigger.__class__.__name__ == 'PlatformTrigger':
        platform.toggle_microphone_onoff()
        if platform.is_microphone_on():
            triggers.enable()
        else:
            trigger.enable()
    elif not platform.is_microphone_on():
        logger.debug('microphone is off, ignoring trigger')
        triggers.enable()
    else:
        if event_commands['pre_interaction']:
            subprocess.Popen(event_commands['pre_interaction'],
                             shell=True,
                             stdout=subprocess.PIPE)

        force_record = None
        if trigger.event_type in triggers.types_continuous:
            force_record = (trigger.continuous_callback, trigger.event_type
                            in triggers.types_vad)

        if trigger.voice_confirm:
            player.play_speech(resources_path + 'alexayes.mp3')

        audio_stream = capture.silence_listener(force_record=force_record)
        alexa_speech_recognizer(audio_stream)

        triggers.enable()

        if event_commands['post_interaction']:
            subprocess.Popen(event_commands['post_interaction'],
                             shell=True,
                             stdout=subprocess.PIPE)
Пример #4
0
def process_response(response):
    logger.debug("Processing Request Response...")

    if response.status_code == 204:
        logger.debug("Request Response is null (This is OKAY!)")
        return

    if response.status_code != 200:
        logger.info("(process_response Error) Status Code: %s",
                    response.status_code)
        response.connection.close()
        platform.indicate_failure()
        return

    try:
        data = bytes("Content-Type: ", 'utf-8') + bytes(
            response.headers['content-type'], 'utf-8') + bytes(
                '\r\n\r\n', 'utf-8') + response.content
        msg = email.message_from_bytes(data)  # pylint: disable=no-member
    except AttributeError:
        data = "Content-Type: " + response.headers[
            'content-type'] + '\r\n\r\n' + response.content
        msg = email.message_from_string(data)

    for payload in msg.get_payload():
        if payload.get_content_type() == "application/json":
            j = json.loads(payload.get_payload())
            logger.debug("JSON String Returned: %s", json.dumps(j, indent=2))
        elif payload.get_content_type() == "audio/mpeg":
            filename = tmp_path + hashlib.md5(
                payload.get('Content-ID').strip(
                    "<>").encode()).hexdigest() + ".mp3"
            with open(filename, 'wb') as f:
                f.write(payload.get_payload(decode=True))
        else:
            logger.debug("NEW CONTENT TYPE RETURNED: %s",
                         payload.get_content_type())

    # Now process the response
    if 'directives' in j['messageBody']:
        if not j['messageBody']['directives']:
            logger.debug("0 Directives received")

        for directive in j['messageBody']['directives']:
            if directive['namespace'] == 'SpeechSynthesizer':
                if directive['name'] == 'speak':
                    player.play_speech("file://" + tmp_path + hashlib.md5(
                        directive['payload']['audioContent'].replace(
                            "cid:", "", 1).encode()).hexdigest() + ".mp3")

            elif directive['namespace'] == 'SpeechRecognizer':
                if directive['name'] == 'listen':
                    logger.debug(
                        "Further Input Expected, timeout in: %sms",
                        directive['payload']['timeoutIntervalInMillis'])

                    player.play_speech(resources_path + 'beep.wav')
                    timeout = directive['payload'][
                        'timeoutIntervalInMillis'] / 116
                    audio_stream = capture.silence_listener(timeout)

                    # now process the response
                    alexa_speech_recognizer(audio_stream)

            elif directive['namespace'] == 'AudioPlayer':
                if directive['name'] == 'play':
                    player.play_playlist(directive['payload'])

            elif directive['namespace'] == "Speaker":
                # speaker control such as volume
                if directive['name'] == 'SetVolume':
                    vol_token = directive['payload']['volume']
                    type_token = directive['payload']['adjustmentType']
                    if (type_token == 'relative'):
                        volume = player.get_volume() + int(vol_token)
                    else:
                        volume = int(vol_token)

                    if (volume > MAX_VOLUME):
                        volume = MAX_VOLUME
                    elif (volume < MIN_VOLUME):
                        volume = MIN_VOLUME

                    player.set_volume(volume)

                    logger.debug("new volume = %s", volume)

    # Additional Audio Iten
    elif 'audioItem' in j['messageBody']:
        player.play_playlist(j['messageBody'])
Пример #5
0
					if directive['name'] == 'listen':
						if debug:
							print("{}Further Input Expected, timeout in: {} {}ms".format(bcolors.OKBLUE, bcolors.ENDC,
																						 directive['payload'][
																							 'timeoutIntervalInMillis']))
=======
						player.play_speech(mrl_fix("file://" + tmp_path + directive['payload']['audioContent'].lstrip("cid:") + ".mp3"))

				elif directive['namespace'] == 'SpeechRecognizer':
					if directive['name'] == 'listen':
						logger.debug("Further Input Expected, timeout in: %sms", directive['payload']['timeoutIntervalInMillis'])
>>>>>>> ae8c2ed84ff9aed5f51946fb5d2e51d3736c8db0

						player.play_speech(resources_path + 'beep.wav')
						timeout = directive['payload']['timeoutIntervalInMillis'] / 116
						audio_stream = capture.silence_listener(timeout)

						# now process the response
						alexa_speech_recognizer(audio_stream)

				elif directive['namespace'] == 'AudioPlayer':
					if directive['name'] == 'play':
						player.play_playlist(directive['payload'])

				elif directive['namespace'] == "Speaker":
					# speaker control such as volume
					if directive['name'] == 'SetVolume':
						vol_token = directive['payload']['volume']
						type_token = directive['payload']['adjustmentType']
						if (type_token == 'relative'):
							volume = player.get_volume() + int(vol_token)
Пример #6
0
def process_response(response):
	logger.debug("Processing Request Response...")

	if response.status_code == 200:
		try:
			data = bytes("Content-Type: ", 'utf-8') + bytes(response.headers['content-type'], 'utf-8') + bytes('\r\n\r\n', 'utf-8') + response.content
			msg = email.message_from_bytes(data) # pylint: disable=no-member
		except TypeError:
			data = "Content-Type: " + response.headers['content-type'] + '\r\n\r\n' + response.content
			msg = email.message_from_string(data)

		for payload in msg.get_payload():
			if payload.get_content_type() == "application/json":
				j = json.loads(payload.get_payload())
				logger.debug("JSON String Returned: %s", json.dumps(j, indent=2))
			elif payload.get_content_type() == "audio/mpeg":
				filename = tmp_path + payload.get('Content-ID').strip("<>") + ".mp3"
				with open(filename, 'wb') as f:
					f.write(payload.get_payload(decode=True))
			else:
				logger.debug("NEW CONTENT TYPE RETURNED: %s", payload.get_content_type())

		# Now process the response
		if 'directives' in j['messageBody']:
			if not j['messageBody']['directives']:
				logger.debug("0 Directives received")

			for directive in j['messageBody']['directives']:
				if directive['namespace'] == 'SpeechSynthesizer':
					if directive['name'] == 'speak':
						player.play_speech(mrl_fix("file://" + tmp_path + directive['payload']['audioContent'].lstrip("cid:") + ".mp3"))

				elif directive['namespace'] == 'SpeechRecognizer':
					if directive['name'] == 'listen':
						logger.debug("Further Input Expected, timeout in: %sms", directive['payload']['timeoutIntervalInMillis'])

						player.play_speech(resources_path + 'beep.wav')
						timeout = directive['payload']['timeoutIntervalInMillis'] / 116
						capture.silence_listener(timeout)

						# now process the response
						alexa_speech_recognizer()

				elif directive['namespace'] == 'AudioPlayer':
					if directive['name'] == 'play':
						player.play_playlist(directive['payload'])

				elif directive['namespace'] == "Speaker":
					# speaker control such as volume
					if directive['name'] == 'SetVolume':
						vol_token = directive['payload']['volume']
						type_token = directive['payload']['adjustmentType']
						if (type_token == 'relative'):
							volume = player.get_volume() + int(vol_token)
						else:
							volume = int(vol_token)

						if (volume > MAX_VOLUME):
							volume = MAX_VOLUME
						elif (volume < MIN_VOLUME):
							volume = MIN_VOLUME

						player.set_volume(volume)

						logger.debug("new volume = %s", volume)

		# Additional Audio Iten
		elif 'audioItem' in j['messageBody']:
			player.play_playlist(j['messageBody'])

		return

	elif response.status_code == 204:
		logger.debug("Request Response is null (This is OKAY!)")
	else:
		logger.info("(process_response Error) Status Code: %s", response.status_code)
		response.connection.close()

		platform.indicate_failure()