跳到主要内容

MPP 音频类功能

音频采集功能

Sample 描述

Sample 名称sample_ai
功能概述根据配置参数采集对应的pcm数据,并写入到文件中保存。
组件依赖mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_ai
输入文件
输出文件/mnt/extsd/test.wav

参数配置

pcm_file_path:指定目标pcm文件的路径,该文件是包含wave头的wav格式文件。
pcm_sample_rate:指定采样率,通常设置为8000。
pcm_channel_cnt:指定通道数目,通常为1或2。
pcm_bit_width:指定位宽,必须设置为16。
pcm_frame_size:指定frame_size,此值可不指定。
pcm_cap_duration:指定测试时间。

测试通路

image-20250301145427162

测试指令

./sample_ai -path ./sample_ai.conf

退出测试

测试时间达到指定时间后,自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 生成pcm 文件test.wav播放正常。

音频输出功能

Sample 描述

Sample 名称sample_ao
功能概述根据配置参数读取pcm数据,然后播放声音,从耳机口或喇叭输出声音。
组件依赖mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_ao
输入文件/mnt/extsd/test.wav
输出文件/mnt/extsd/SampleAo_AoSaveFile.pcm

参数配置

pcm_file_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值。
pcm_channel_cnt:指定通道数目,设置为文件中的通道数。
pcm_bit_width:指定位宽,设置为文件中的位宽。
pcm_frame_size:固定指定为1024。
ao_volume:输出的音量,范围:0~100。

测试通路

image-20250301145545765

测试指令

./sample_ao -path ./sample_ao.conf

退出测试

播放完wav 文件后会自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放声音正常。同时,抓取pcm 文件SampleAo_AoSaveFile.pcm。

采用音频输出同步功能

Sample 描述

Sample 名称sample_aoSync
功能概述演示接口AW_MPI_AO_SendFrameSync 的使用方法,采用同步的方式send pcm frame。而sample_ao 是采用异步的方式。
根据配置参数读取pcm数据,然后播放声音,从耳机口输出声音。
支持硬件音量调节和软件音量调节。
组件依赖mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_aoSync
输入文件/mnt/extsd/test.wav
输出文件

参数配置

pcm_file_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_frame_size:指定每次取pcm 的帧数,用来与其他参数配合决定分配pcm frame buf 的大小。
ao_volume:指定音量大小。范围[0, 100]
ao_softvolume:设置软增益音量,使用alsa的softvol插件进一步增大音量,范围[0, 100]
test_duration:指定测试时间,单位:秒。

parse_wav_header_enable:指定是否使用sample 内部wav header 的解析。
注意:如果使能,wav 文件在sample 内部会自己解析这些参数,并覆盖下面指定的参数值(pcm_sample_rate、pcm_channel_cnt、pcm_bit_width)。

pcm_sample_rate:指定采样率,设置为文件中的采样率的值。如果parse_wav_header_enable为1,则优先使用解析的结果。
pcm_channel_cnt:指定通道数目,设置为文件中的通道数。如果parse_wav_header_enable为1,则优先使用解析的结果。
pcm_bit_width:指定位宽,设置为文件中的位宽。如果parse_wav_header_enable为1,则优先使用解析的结果。

测试通路

image-20250301145639426

测试指令

./sample_aoSync -path ./sample_aoSync.conf

退出测试

播放完wav 文件后会自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放声音正常。

读取 PCM 数据播放功能

Sample 描述

Sample 名称sample_ao_resample_mixer
功能概述根据配置参数读取pcm数据,然后播放声音,从耳机口或喇叭输出声音。
可以测试resample及混音功能。
组件依赖mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_ao_resample_mixer
输入文件/mnt/extsd/speech.wav
/mnt/extsd/48000_ch2_bit16.wav
输出文件

参数配置

pcm_file_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值。
pcm_channel_cnt:指定通道数目,设置为文件中的通道数。
pcm_bit_width:指定位宽,设置为文件中的位宽。
pcm_frame_size:固定指定为1024。
pcm_second_chl_en: 是否启动第二路ao,以测试resample及混音功能。

pcm_file_path_slave:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_sample_rate_slave:指定采样率,设置为文件中的采样率的值。
pcm_channel_cnt_slave:指定通道数目,设置为文件中的通道数。
pcm_bit_width_slave:指定位宽,设置为文件中的位宽。
pcm_frame_size_slave:固定指定为1024。

测试通路

image-20250301145730434

测试指令

./sample_ao_resample_mixer -path ./sample_ao_resample_mixer.conf

退出测试

播放完wav 文件后会自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放声音正常。

回声消除功能

Sample 描述

Sample 名称sample_ao2ai_aec
功能概述本sample主要用来演示aec功能的使用。
sample创建两路ai,一路通过tunnel mode 绑定于audio enc,直接aac编码,并保存编码后的数据;一路采用非tunnel模式,由app获取ai数据,做其他处理。
sample运行过程如下:
根据配置参数读取pcm数据,然后播放声音。同时ai采集音频数据,并做aec回声消除处理,后送aac编码或直接获取aec后的数据用做他用。
组件依赖mpp_aenc
mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_ao2ai_aec
输入文件/mnt/extsd/sample_ai/sample_ai_16000_ch1_bit16_aec_20.wav
输出文件/mnt/extsd/sample_ao2ai/tmp/ai_cap.pcm
/mnt/extsd/sample_ao2ai/tmp/ai_cap.aac

参数配置

pcm_src_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_dst_path:指定目标文件的路径,该文件是ai组件采集音频生成的文件,不带wav头,如果想听该音频,需手动加上wave头。
aac_dst_path: 指定编码后aac目标文件路径,该文件为aac raw data。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值,启用aec后,sample rate须为8000.
pcm_channel_cnt:指定通道数目,设置为文件中的通道数,启用aec后,sample rate须为1.
pcm_bit_width:指定位宽,设置为文件中的位宽,启用aec后,bit_width须为16.
pcm_frame_size:帧大小,固定指定为1024。
aec_en:是否启动aec回声消除功能。1:启动;0:不启用。
aec_delay_ms: 启用aec回声消除功能时,设置的延迟时间,主要给aec回声消除算法使用,建议先设置为0。

测试通路

image-20250301145810481

测试指令

./sample_ao2ai_aec -path ./sample_ao2ai_aec.conf

退出测试

按“crtl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放没有回声。

回声消除,重采样,混音功能

Sample 描述

Sample 名称sample_ao2ai_aec_rate_mixer
功能概述演示回声消除功能。
sample创建两路ai,一路通过tunnel mode 绑定于audio enc,直接aac编码,并保存编码后的数据;
一路采用非tunnel模式,由app获取ai数据,做其他处理。
sample运行过程如下:
根据配置参数读取pcm数据,然后播放声音。同时ai采集音频数据,
并做aec回声消除处理,后送aac编码或直接获取aec后的数据用做他用。
组件依赖mpp_aenc
mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_ao2ai_aec_rate_mixer
输入文件第一路:/mnt/extsd/speech.wav
第二路:/mnt/extsd/48000_ch2_bit16.wav
输出文件/mnt/extsd/ai_cap.pcm
/mnt/extsd/ai_cap.aac

参数配置

第一路音频数据文件及对应参数:
pcm_src_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_dst_path:指定目标文件的路径,该文件是ai组件采集音频生成的文件,不带wav头,如果想听该音频,需手动加上wave头。
aac_dst_path: 指定编码后aac目标文件路径,该文件为aac raw data。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值,启用aec后,sample rate须为8000.
pcm_channel_cnt:指定通道数目,设置为文件中的通道数,启用aec后,sample rate须为1.
pcm_bit_width:指定位宽,设置为文件中的位宽,启用aec后,bit_width须为16.
pcm_frame_size:固定指定为1024。
aec_en: 1:启动aec回声消除功能;0:不启用aec回声消除功能;
aec_delay_ms: 启用aec回声消除功能时,设置的延迟时间,主要给aec回声消除算法使用,建议先设置为0。

第二路音频数据文件及对应参数:
pcm_src_path_slave:指定音频pcm文件的路径。
pcm_sample_rate_slave:指定采样率。
pcm_channel_cnt_slave:指定通道数目。
pcm_bit_width_slave:指定位宽。
pcm_frame_size_slave:指定帧大小,固定指定为1024。

测试通路

image-20250301145912585

测试指令

./sample_ao2ai_aec_rate_mixer -path ./sample_ao2ai_aec_rate_mixer.conf

退出测试

按“crtl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放没有回声。

回声消除增强功能

Sample 描述

Sample 名称sample_aec
功能概述本sample主要用来演示aec(回声消除)功能的使用。
sample创建ao,播放音频文件作为回声。
sample创建ai,接收外界声音(其中必然包括ao播放出的音频)。mpi_ai启动回声消除功能。
sample从mpi_ai组件获取采集的数据保存为wav文件,在mpi_ai打开回声消除的情况下,wav文件应已过滤了ao播放的音乐。如果没有打开回声消除,wav文件会混合外界说话声和ao播放的音乐。
sample也包含了DRC(软件增强音量)的测试。

启用aec功能的方式如下:
启用aec功能并不复杂,相比于不启用aec功能的操作,只是在设置ai dev属性时多了两个属性参数:
1) ai_aec_en:是否使能aec。1:enable;0:disable。
2) aec_delay_ms: aec算法用delay参数。单位:ms,建议先设为0。
然后调用api:AW_MPI_AI_SetPubAttr()。

音频回声消除
内核驱动采集播放出的音频数据,提供接口供获取。AI 通道获取播放的音频数据作为音频参考帧,利用回声消除算法,消除采集的音频数据中的相同音频帧。
组件依赖mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_aec
输入文件/mnt/extsd/sample_aoref_8000_ch1_bit16_aec_30s.wav
输出文件/mnt/extsd/ai_cap.wav

参数配置

pcm_src_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_dst_path:指定目标文件的路径,该文件是ai组件采集音频生成的文件,可配置是否带wav头,如果想在PC上播放音频文件,需带wav头。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值,启用aec后,sample rate须为8000.
pcm_channel_cnt:指定通道数目,设置为文件中的通道数,启用aec后,sample rate须为1.
pcm_bit_width:指定位宽,设置为文件中的位宽,启用aec后,bit_width须为16.
pcm_frame_size:固定指定为1024。
aec_en: 1:启动aec回声消除功能;0:不启用aec回声消除功能;
aec_delay_ms: 启用aec回声消除功能时,设置的延迟时间,主要给aec回声消除算法使用,建议先设置为0;
add_wav_header:保存pcm文件是否需要加wav头。

测试通路

image-20250301150019634

测试指令

./sample_aec -path ./sample_aec.conf

退出测试

按“crtl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放没有回声。

音频编码功能

Sample 描述

Sample 名称sample_aenc
功能概述从pcm文件(如:test.wav)中读取每一桢的数据,进行编码,然后保存为aac/mp3/adpcm/pcm/g711a/g711u/g726格式的压缩文件。
组件依赖mpp_aenc
mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_aenc
输入文件/mnt/extsd/test.wav
输出文件/mnt/extsd/test.aac

参数配置

sample_aenc_src_file:指定原始pcm文件的路径,该文件是包含wave头的wav格式文件。
sample_aenc_dst_file:指定编码后生成的aac或mp3或其它格式文件的路径。注意指定的后缀名必须小写,用于指定编码方式,否则按aac格式来编码。

测试通路

image-20250301150107280

测试指令

./sample_aenc -path ./sample_aenc.conf

退出测试

处理完wav 文件后,会自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 音频编码生成文件test.aac 播放正常。

音频采集和编码功能

Sample 描述

Sample 名称sample_ai2aenc
功能概述mic录音送入编码器,取得每一帧数据的编码,写到文件中。
目前支持aac, pcm, g711a/u, g726a/u编码,以裸码流形式存储在文件中。
文件后缀名以编码格式命名,例如test.aac, test.pcm, test.g711a, test.g711u等。
组件依赖mpp_aenc
mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_ai2aenc
输入文件
输出文件/mnt/extsd/test.aac

参数配置

dst_file:生成文件路径
encoder_type:编码类型,如“aac”
sample_rate:mic录音采样值
channel_cnt: 录音通道数 (1 or 2)
bit_width:录音采样位宽
frame_size: 帧大小 (如:1024 / 2048)
test_duration: sample一次测试时间(单位:s)

测试通路

image-20250301150213451

测试指令

./sample_ai2aenc -path ./sample_ai2aenc.conf

退出测试

测试时间达到指定时间后,自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 生成编码文件test.aac播放正常。

音频采集、编码和封装功能

Sample 描述

Sample 名称sample_ai2aenc2muxer
功能概述根据配置参数采集对应的pcm数据,然后根据配置信息将pcm数据编码,最后写入到文件中进行保存。
组件依赖mpp_aenc
mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_ai2aenc2muxer
输入文件
输出文件/mnt/extsd/SampleAi2Aenc2Muxer_AiSaveFile.pcm
/mnt/extsd/sample_ai2aenc2muxer_mono_16000.aac

参数配置

dst_file:指定目标pcm文件的路径,该文件是包含wave头的wav格式文件。
cap_dura:指定采集时间长度,单位:s。
chn_cnt:指定通道数目,通常为1或2。
bit_width:指定位宽,必须设置为16。
smp_rate:指定采样率,通常设置为8000。
bitRate:编码的码率,单位:bps。

测试通路

image-20250301150247191

测试指令

./sample_ai2aenc2muxer -path ./sample_ai2aenc2muxer.conf

退出测试

测试时间达到指定时间后,自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 生成文件sample_ai2aenc2muxer_mono_16000.aac 播放正常,同时抓取pcm 文件SampleAi2Aenc2Muxer_AiSaveFile.pcm。

音频解码功能

Sample 描述

Sample 名称sample_adec
功能概述从已编码的ADTS格式的AAC文件(如:test.aac)中读取每一桢的数据,进行解码,然后保存为WAV格式的pcm文件。
或者从裸码流文件(如g711a/u, g726a/u)中读取固定大小的数据(g711a/u是一次读取1024字节,g726a/u是一次读取512字节),
进行解码,然后保存为wav格式的pcm文件。
组件依赖mpp_adec
mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_adec
输入文件/mnt/extsd/test.aac
输出文件/mnt/extsd/test.wav

参数配置

audio_file_path:指定原始已压缩的音频文件的路径,目前支持aac, g711a/u, g726a/u。
pcm_file_path:指定解码后生成的pcm文件的路径。

测试通路

image-20250301150334605

测试指令

./sample_adec -path ./sample_adec.conf

退出测试

aac 文件处理完,会自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 音频解码生成目标文件test.wav 播放正常。

音频解码输出功能

Sample 描述

Sample 名称sample_adec2ao
功能概述从已编码的ADTS格式的AAC文件(如:test.aac)中读取每一桢的数据,进行解码,然后通过ao输出。
组件依赖mpp_adec
mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_adec2ao
输入文件/mnt/extsd/test.aac
输出文件

参数配置

audio_file_path: 指定音频文件路径。
pcm_sample_rate: 指定pcm的采样率,单位: Hz。默认16000,表示16000Hz。对于g711和g726需要配置该值。
pcm_channel_cnt: 指定pcm通道数,默认1,表示单通道。对于g711和g726需要配置该值。
audio_data_type: 指定音频数据类型(g711a:19;g711u:20;aac:37;g726a:21,g726u:2000)。

测试通路

image-20250301150421391

测试指令

./sample_adec2ao -path ./sample_adec2ao.conf

退出测试

音频文件处理完,会自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 音频解码后,输出声音正常。

视频文件分离音频数据帧并解码

Sample 描述

Sample 名称sample_demux2adec
功能概述根据配置参数读取视频文件,解封装,获取到音频数据后,送解码器,保存为wav文件。
组件依赖mpp_demuxer
mpp_adec
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_demux2adec
输入文件/mnt/extsd/test.mp4
输出文件/mnt/extsd/output.wav

参数配置

src_file:指定mp4视频文件的路径。
dst_file:指定wav音频文件的路径。

测试通路

image-20250301150519714

测试指令

./sample_demux2adec -path ./sample_demux2adec.conf

退出测试

测试完文件test.mp4,可以自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 生成音频文件output.wav 播放正常。

视频文件分离音频数据帧并解码播放

Sample 描述

Sample 名称sample_demux2adec2ao
功能概述根据配置参数读取视频文件,解封装,获取到音频数据后,送解码器,然后播放出声音,从耳机口或喇叭输出声音。
组件依赖mpp_demuxer
mpp_adec
mpp_aio
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_demux2adec2ao
输入文件/mnt/extsd/test.mp4
输出文件

参数配置

src_file:指定mp4视频文件的路径。

测试通路

image-20250301150601442

测试指令

./sample_demux2adec2ao -path ./sample_demux2adec2ao.conf

退出测试

测试完文件test.mp4,可以自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放声音,声音正常。