""" mixgo_nova Voice Onboard resources Micropython library for the mixgo_nova Onboard resources ======================================================= @dahanzimin From the Mixly Team """ import es8374 import ustruct import music_spk from machine import Pin from esp_i2s import I2S from esp_tts import TTS from mixgo_nova import onboard_i2c ob_code = es8374.ES8374(onboard_i2c) ob_tts = TTS() ob_audio = I2S(0, sck=Pin(34), ws=Pin(47), sd_out=Pin(48), sd_in=Pin(33), mck=Pin(35), channels=1) ob_audio.start() spk_midi = music_spk.MIDI(ob_audio) def u2s(n): return n if n < (1 << 15) else n - (1 << 16) def sound_level(): buf = bytearray(100) values = [] ob_audio.readinto(buf) for i in range(len(buf)//2): values.append(u2s(buf[i * 2] | buf[i * 2 + 1] << 8)) return max(values) - min(values) def play_tts(text, speed=3): ob_audio.stop() ob_audio.sample_rate = 16000 ob_audio.start() if ob_tts.parse_chinese(text): while True: data = ob_tts.stream_play(speed) if not data: break else: ob_audio.write(data) def play_audio(path, chunk=1024): file = open(path, 'rb') header = file.read(44) if header[8:12] != b'WAVE': raise Error('not a WAVE file') ob_audio.stop() ob_audio.sample_rate = ustruct.unpack('