title | keywords | desc |
---|---|---|
audio |
maixpy, k210, AIOT, edge computing |
maixpy audio (audio) |
Abstract audio object, which can be passed in as a parameter or directly use its method to play audio
Construct an Audio
object
audio.Audio(array=None, path=None, points=1024)
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 isNone
-
path
: Open audio file path, currently only supportswav
format, default isNone
, Note The keywordpath
,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.
Returns an Audio
object
Convert the audio data in the audio object to an object of type bytearray
audio_data = test_audio.to_bytes()
no
The returned audio data bytearray
object
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)
i2s_dev
: i2s device for playback
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)
Read audio files and parse them for playback, generally used with loop
no
None
: The format does not support playback0
: End of playback1
: Now playing
To complete the audio playback, this function must be called after the playback is completed to recover the resources allocated by the bottom layer
no
no
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()