PYNQ实验二:音频播放

它使用音频插孔HP + MIC播放录音;它可以从HP + MIC或LINE_IN上的麦克风输入。预先录制的音频样本也可以作为输入。
在这里插入图片描述

from pynq.overlays.base import BaseOverlay
base = BaseOverlay("base.bit")

pAudio = base.audio

pAudio.select_line_in()
pAudio.bypass(seconds=5)

pAudio.record(5)
pAudio.save("recording_1.wav")

pAudio.load("/home/xilinx/jupyter_notebooks/base/audio/recording_0.wav")
pAudio.play()

pynq.lib.audio模块

pynq.lib.audio模块是一个驱动程序,用于从板载音频监听音箱读取和记录值,加载预先存在的音频文件或将音频输入播放到输出设备。

class pynq.lib.audio.AudioADAU1761(description )
base: pynq.overlay.DefaultIP
与音频编解码器控制器交互的类。
每个原始音频样本为24位,填充为32位。音频控制器支持单声道和立体声模式以及I2S格式的数据。

(1)buffer
numpy.ndarray - 存储音频的numpy数组。

(2)sample_rate
int - 编解码器的采样率。

(3)sample_len
int - 当前缓冲区内容的样本长度。

(4)iic_index
int - / dev中IIC实例的索引。

(5)uio_index
int - / dev中的UIO实例的索引。

(6)bindto= [ ‘xilinx.com:user:audio_codec_ctrl:1.0’]

(7)bypass(seconds)
将音频控制器输入直接输出到输出。
它将运行一定的秒数,然后自动停止。
参数: seconds(float) - 要记录的秒数。
返回:
返回类型: 没有

(8)configure(sample_rate = 48000,iic_index = 1,uio_name =‘audio-codec-ctrl’ )
配置音频编解码器。

默认情况下,编解码器的采样率为48KHz。该方法将配置PLL和编解码器寄存器。
需要参数iic_index作为输入;
uio_index是从uio_name自动计算的。
用户还可以显式调用此函数来重新配置驱动程序。
参数:
sample_rate(int) - 编解码器的采样率。
iic_index(int) - / dev中IIC实例的索引。
uio_name(int) - 设备树中配置的UIO的名称。

(9)deselect_inputs()
取消选择输入。
此方法将禁用LINE_IN和MIC输入。

(10)static info( file)
打印有关声音文件的信息。(信息包括名称,频道,样本,框架等。)

注意:将在指定的路径中搜索该文件,或者在路径不存在的情况下在工作目录中搜索该文件。
参数: file(字符串) - 文件名,默认扩展名为wav。
返回:
返回类型: 没有

(11)load(文件)
将文件加载到内部音频缓冲区。
录制的文件格式为* .wav。
请注意,我们希望缓冲区中有32位样本,而每个保存的样本只有24位。因此,我们需要在读取波形文件时填充最高的8位。

注意:将在指定的路径中搜索该文件,或者在路径不存在的情况下在工作目录中搜索该文件。

参数: file(字符串) - 文件名,默认扩展名为wav。
返回:
返回类型: 没有

(12)play()
通过音频插孔播放音频缓冲区。
由于两个通道都是采样的,因此缓冲区大小必须是采样长度的两倍。
返回:
返回类型: 没有

(13)record(seconds)
将数据从音频控制器记录到音频缓冲区。
两个通道的采样率均为48000Hz。请注意, 只有在修改缓冲区时才会更改sample_len。由于两个通道都是采样的,因此缓冲区大小必须是采样长度的两倍。
参数: seconds(float) - 要记录的秒数。
返回:
返回类型: 没有

(14)save( file)
将音频缓冲区内容保存到文件中。
录制的文件格式为* .wav。
请注意,每个32位样本中只有24位是真实样本; 最高的8位是填充,在写入波形文件时应该删除。

注意:保存的文件将放入指定的路径,或者在路径不存在的情况下放在工作目录中。

参数: file(字符串) - 文件名,默认扩展名为wav。
返回:
返回类型: 没有

(15)select_line_in()
在电路板上选择LINE_IN。
此方法将选择LINE_IN作为输入。

(16)select_microphone()
在电路板上选择MIC。
此方法将选择MIC作为输入。

class pynq.lib.audio.AudioDirect(description,gpio_name = None )
base: pynq.overlay.DefaultIP

用于与音频控制器交互的类。

每个音频样本都是32位整数。音频控制器仅支持单声道模式,并使用脉冲密度调制(PDM)。

(1)mmio
MMIO - 与音频控制器关联的MMIO对象。

(2)gpio
GPIO - 与音频控制器关联的GPIO对象。

(3)buffer
numpy.ndarray - 存储音频的numpy数组。

(4)sample_rate
int - 当前缓冲区内容的采样率。

(5)sample_len
int - 当前缓冲区内容的样本长度。

(6)bindto= [ ‘xilinx.com:user:audio_direct:1.1’]

(7)bypass_start()
将音频控制器输入直接输出到输出。
返回:
返回类型: 没有

(8)bypass_stop()
停止直接输入到输出。
返回:
返回类型: 没有

(9)static info(file)
打印有关声音文件的信息。(信息包括名称,频道,样本,框架等。)

注意:将在指定的路径中搜索该文件,或者在路径不存在的情况下在工作目录中搜索该文件。
参数: file(字符串) - 文件名,默认扩展名为pdm。
返回:
返回类型: 没有

(10)load( file)
将文件加载到内部音频缓冲区。
录制的文件格式为* .pdm。

注意:将在指定的路径中搜索该文件,或者在路径不存在的情况下在工作目录中搜索该文件。

参数: file(字符串) - 文件名,默认扩展名为pdm。
返回:
返回类型: 没有

(11)play()
通过音频插孔播放音频缓冲区。
返回:
返回类型: 没有

(12)record(seconds)
将数据从音频控制器记录到音频缓冲区。每个字的采样率是192000Hz。

参数: seconds(float) - 要记录的秒数。
返回:
返回类型: 没有

(13)save(file)
将音频缓冲区内容保存到文件中。
录制的文件格式为* .pdm。
注意:保存的文件将放入指定的路径,或者在路径不存在的情况下放在工作目录中。
参数: file(字符串) - 文件名,默认扩展名为pdm。
返回:
返回类型: 没有

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值