audio

Abstract audio object, which can be passed in as a parameter or directly use its method to play audio

Module function

Constructor

Construct an Audio object

audio.Audio(array=None, path=None, points=1024)

Parameters

The interface can pass in a parameter, each parameter will determine a different audio type

  • array: bytearray type data, which can be converted into audio objects, the default is None

  • path: Open audio file path, currently only supports wav format, default is None, Note The keyword path, audio.Audio("/sd/1.wav" needs to be marked) )This is wrong! ! audio.Audio(path = "/sd/1.wav") is correct

  • points: Open up an audio buffer with points sampling points, one sampling point is 32bit. If it is 0, the buffer will not be opened, and the default is 1024.

return value

Returns an Audio object

to_bytes: bytes conversion function

Convert the audio data in the audio object to an object of type bytearray

audio_data = test_audio.to_bytes()

Parameters

no

return value

The returned audio data bytearray object

play_process: Play preprocessing function

It is used to preprocess audio objects. The audio file needs to be parsed before playing, so preprocessing is required. Here you need to pass in an I2S device for playback

wav_info = test_audio.play_process(i2s_dev)

Parameters

  • i2s_dev: i2s device for playback

return value

The header information of the wav file, list type, are numchannels (number of channels), samplerate (sampling rate), byterate (number of data bytes per second = samplerate * numchannels * bitspersample / 8 ), blockalign (the number of bytes required for each sample = numchannels * bitspersample / 8), bitspersample (the number of bits stored in each sample, 8: 8bit, 16: 16bit, 32: 32bit), datasize(audio data length)

play: play function

Read audio files and parse them for playback, generally used with loop

Parameters

no

return value

  • None: The format does not support playback
  • 0: End of playback
  • 1: Now playing

finish: Audio post-processing function

To complete the audio playback, this function must be called after the playback is completed to recover the resources allocated by the bottom layer

Parameters

no

return value

no

Routine

Play wav audio

from fpioa_manager import *
from Maix import I2S, GPIO
import audio

# disable wifi
fm.register(8, fm.fpioa.GPIO0)
wifi_en=GPIO(GPIO.GPIO0,GPIO.OUT)
wifi_en.value(0)

# register i2s(i2s0) pin
fm.register(34,fm.fpioa.I2S0_OUT_D1)
fm.register(35,fm.fpioa.I2S0_SCLK)
fm.register(33,fm.fpioa.I2S0_WS)

# init i2s(i2s0)
wav_dev = I2S(I2S.DEVICE_0)

# init audio
player = audio.Audio(path = "/sd/6.wav")
player.volume(40)

# read audio info
wav_info = player.play_process(wav_dev)
print("wav file head information: ", wav_info)

# config i2s according to audio info
wav_dev.channel_config(wav_dev.CHANNEL_1, I2S.TRANSMITTER,resolution = I2S.RESOLUTION_16_BIT ,cycles = I2S.SCLK_CYCLES_32, align_mode = I2S.RIGHT_JUSTIFYING_MODE)
wav_dev.set_sample_rate(wav_info[1])

# loop to play audio
while True:
    ret = player.play()
    if ret == None:
        print("format error")
        break
    elif ret==0:
        print("end")
        break
player.finish()