主要内容

使用音频捕捉回放的音频Pitch Shift

这个例子展示了如何在树莓派硬件上使用音频捕获和回放来改变音频信号的音调。

在这个例子中,你将学习如何:

  • 从连接到树莓派硬件的USB麦克风或网络摄像头麦克风获取音频

  • 改变获取音频的音调

  • 通过树莓派硬件的耳机插孔播放处理后的音频数据

请注意—本例仅适用于已安装的树莓派硬件MATLAB支持包。金宝app部署audiocapture而且audioplayer在MATLAB金宝app®Online™中不支持。

距变化

音调偏移是修改音频信号的音调以增加或减少音调的能力。例如,当一辆快速行驶的汽车在街道上超过你时,汽车发出的声音的音调会随着汽车接近你而增加,而随着汽车远离你而降低。当音频源靠近或远离接收器时,连续的信号以或大或小的时间间隔到达接收器。这个时间差会导致接收器听到的音频频率发生变化。您可以通过将音频信号分成两个部分来执行类似的音调转移操作,使用不同的时间段延迟信号,然后将它们重新加在一起。这个过程模拟增加或减少音高的效果,取决于两个信号延迟或重叠的方式。为了保证均匀的功率水平,分裂信号的单个增益必须被调制。

所需的产品下载188bet金宝搏

所需的硬件

  • 树莓派硬件(推荐型号3B或3B+)

  • 音频采集设备:USB麦克风或摄像头麦克风

  • 一副耳机,可以插在硬件的3.5毫米耳机插孔里

  • USB电缆

  • 以太网电缆

  • 一个连接到树莓派硬件和HDMI线的显示器(可选)

步骤1:连接树莓派硬件进行Pitch Shift

在开始本示例之前,我们建议您完成树莓派硬件的MATLAB支持包入门金宝app的例子。

1.将USB数据线的micro-USB一端连接到树莓派,将USB数据线的普通USB一端连接到计算机。等待硬件上的PWR指示灯开始闪烁。

2.将网络摄像头或麦克风连接到硬件上的一个USB端口。请注意,一些网络摄像头耗电太多,可能需要一个有电源的USB集线器才能正常运行。

3.将一副耳机连接到硬件的3.5 mm耳机插孔。

4.使用硬件设置界面,配置树莓派网络。

步骤2:更改音频输出模式为耳机插孔

1.在硬件终端执行该命令,打开硬件的“软件配置工具”。

sudoraspi-config

2.2 .在“软件配置工具”窗口中,选择高级选项并按输入,然后选择音频并按输入

3.选择强制3.5毫米(“耳机”)插孔选项并按输入

4.新闻好吧

步骤3:创建捕获和回放对象

创建一个raspi对象。

Rpi = raspi();

创建captureObj而且playerObj系统对象用于树莓派硬件上的音频处理。

captureObj是否连接到音频源设备plughw: 1、0.音频输入的采样率为48000,每帧采样率为4800。

captureObj =音频捕捉(rpi,“plughw: 1、0”“SampleRate”, 48000,“SamplesPerFrame”, 4800);

playbackObj是否连接到音频播放器设备plughw: 0 1.音频输出以48000的采样率播放。

playbackObj = audioplayer(rpi,“plughw: 0、1”“SampleRate”, 48000);

如果您不知道设备的名称,请使用listAudioDevices(金宝app树莓派硬金宝app件的Simulink支持包)函数。

第四步:执行音频输入的Pitch Shift

audiopluginexample。PitchShifter是一个执行音调移动算法的音频插件对象。插件参数是基音移(半色调)、交叉衰落因子(控制两个延迟分支之间的重叠)和采样频率。插件的参数是通过将它们的值分别设置为输入参数pitch和overlap来调优的。

Pitch = -5;重叠= 0.2;Fs = 8192;

shiftPitch,一个可用于执行音调移动的函数,实例化一个audiopluginexample。PitchShifter插件,并使用setSampleRate方法将其采样率设置为输入参数Fs。

pitchShifter = audiopluginexample。PitchShifter (“PitchShift”8“重叠”, 0.3);setSampleRate (pitchShifter Fs);

从输入设备捕获音频。输入类型为int16,在处理数据之前需要将其转换为double类型。这是因为函数shiftPitch期望其所有输入都是相同的数据类型。输出数据需要为int16类型,因此双精度类型pitchshift在发送到音频播放设备之前被转换为int16类型。

k = 1:3000 input = capture(captureObj);pitchshift = 0 (size(double(input)),“喜欢”、双(输入));pitchShifter。PitchShift = pitch;pitchShifter。重叠=重叠;[pitchshift] = pitchShifter(double(input));玩(playbackObj int16 (pitchShifted));结束

步骤5:部署MATLAB函数

您可以部署raspi_pitchshiftdeployment ()硬件功能。

函数Raspi_pitchshiftdeployment () rpi = raspi();captureObj =音频捕捉(rpi,“plughw: 1、0”“SampleRate”, 48000,“SamplesPerFrame”, 4800);playbackObj = audioplayer(rpi,“plughw: 0、1”“SampleRate”, 48000);
Pitch = -5;重叠= 0.2;Fs = 8192;
pitchShifter = audiopluginexample.PitchShifter('PitchShift',8,'Overlap',0.3);setSampleRate (pitchShifter Fs);
for k = 1:3000 input = capture(captureObj);pitchshift = 0 (size(double(input)),'like',double(input));% #好< PREALL > pitchShifter。PitchShift = pitch;pitchShifter。重叠=重叠;[pitchshift] = pitchShifter(double(input));玩(playbackObj int16 (pitchShifted));结束结束

部署raspi_pitchshiftdeployment作为硬件上的独立可执行文件部署函数。

board = targetHardware(“树莓π”)部署(董事会,“raspi_pitchshiftdeployment”
代码一代成功:视图报告

部署函数的代码生成raspi_pitchshiftdeployment函数。代码生成结束后,MATLAB生成代码生成报告。使用此报告调试raspi_pitchshiftdeployment函数用于生成代码中的任何构建错误和警告。

在成功生成代码之后,支持包将加载代码并在硬件上作为独立的可执行文件运行。金宝app可执行文件开始从音频设备获取实时音频输入,在获取的音频上运行音调偏移算法,然后在回放设备上播放结果。