主要内容

实时音频MATLAB

音频工具箱™实时音频处理进行了优化。audioDeviceReader,audioDeviceWriter,audioPlayerRecorder,dsp.AudioFileReader,dsp.AudioFileWriter为流多通道音频设计,提供必要的参数,这样您就可以吞吐量和延迟之间的权衡。

对信息实时处理和如何优化算法,明白了音频I / O:缓冲、延迟和吞吐量

本教程描述如何在MATLAB中实现音频流处理®。它概述了工作流创建开发试验台为每个阶段的工作流程,并提供例子。

创建一个开发试验台

本教程中创建一个开发试验台四个步骤:

  1. 构建对象输入和输出音频试验台。

  2. 创建一个音频流循环处理你的音频帧。

  3. 添加一个范围可视化你的音频流的输入和输出循环。

  4. 添加一个音频流循环处理算法。

本教程还讨论了工具可视化和实时优化处理算法。

对于处理循环的概述,请考虑以下完成试验台。你可以重新创建这个试验台通过本教程一步一步走。

完成试验台的代码

1。创建输入/输出系统对象年代

你的音频流循环可以阅读从一个设备或一个文件,它可以编写一个设备或一个文件中。在本例中,您构建一个音频流循环读取音频帧从一个文件,并将音频帧写入设备。看到快速入门示例另一个输入/输出配置。

创建一个dsp.AudioFileReader™和指定一个文件系统对象。为了减少延迟,设置SamplesPerFrame财产的dsp.AudioFileReader系统对象小帧大小。

接下来,创建一个audioDeviceWriter系统对象并指定采样率采样率的文件阅读器。

如何使用系统对象的更多信息,参见系统对象是什么?

查看示例代码

2。创建音频流循环

一个音频流音频迭代循环过程。它是通过:

  • 阅读一个音频信号的帧

  • 处理音频信号的帧

  • 写作的音频信号设备或文件

  • 移动到下一帧

在本教程中,音频流的输入循环读取文件。输出写入设备。

读取一帧音频文件,打电话给你dsp.AudioFileReader在你的音频流循环,并提供没有参数。编写一个音频信号帧,打电话给你audioDeviceWriter在你的音频流循环一个音频信号作为参数。

查看示例代码

所有系统有一个对象释放函数。作为一项最佳实践,用后释放你的系统对象,尤其是如果这些系统对象是与硬件设备通信,比如声卡。

3所示。添加范围

有几个可用的范围。两个常见的范围是timescope简介。本教程使用timescope可视化的音频信号。

timescope系统对象显示时域的音频信号。创建系统对象。帮助可视化、指定的值时间间隔,BufferLength,YLimits属性。想象一个音频信号帧,调用timescope系统对象在你的音频流回路与音频信号作为参数。

查看示例代码

4所示。开发处理算法

在大多数应用程序中,你想处理你的音频信号在你的音频流循环。可以处理阶段:

  • 一块MATLAB代码在您的音频流循环

  • 一个单独的函数在您的音频流循环

  • 一个叫做音频流内循环系统对象

在本教程中,您将调用反射器处理信号的音频流内循环。

创建一个反射器系统对象,指定SampleRate房地产作为你的文件阅读器的采样率。调整混响效果,指定的值预延迟WetDryMix属性。混响效应应用于音频信号帧,调用反射器在你的音频流循环一个音频信号作为参数。

查看示例代码

添加可调谐性

音频工具箱用户有几个选项来添加实时处理算法的可调性。添加你的音频流可调谐性循环,您可以使用:

  • 音频测试台上——基于ui的练习audioPlugin和大多数音频工具箱系统对象类。

  • 内置的音频工具箱函数,函数可视化处理算法的关键方面。

  • 一个定制的用户界面——看到实时参数调优对于一个教程。

  • MIDI控制器——许多音频工具箱系统对象包括功能支持MIDI控制。万博1manbetx您可以使用configureMIDI功能反射器系统对象同步您的系统对象属性MIDI控制。使用MIDI控制系统没有的对象configureMIDI功能,请参阅MIDI控制表面界面

  • 用户数据报协议(UDP)——你可以在MATLAB中使用UDP连接传输。您还可以使用UDP环境之间接收或发送数据报。可能的应用包括使用MATLAB工具来优化您的音频处理算法在播放音频和可视化的一个第三方的环境。UDP通信的一个示例应用程序,请参阅穴鸟和MATLAB使用UDP通信

快速入门示例

从设备文件音频流

这个例子展示了如何获得一个使用你的麦克风使用的音频信号audioDeviceReader执行基本的信号处理,写你的信号到一个文件中使用dsp.AudioFileWriter

构造输入和输出对象。使用输入的采样率采样率的输出。

deviceReader = audioDeviceReader;fileWriter = dsp.AudioFileWriter (SampleRate = deviceReader.SampleRate);

指定一个音频处理算法。为简单起见,增加收益。

过程= @ x (x)。* 5;

以下步骤在while循环连续流处理:

  1. 打电话给你的音频设备读者像一个函数没有参数获得一个输入框。

  2. 执行你的信号处理操作的输入框。

  3. 打电话给你的音频文件作家像一个函数处理框架作为参数。

文件命名为output.wav和写入当前默认文件夹。

disp (“开始信号输入…”)
开始信号输入…
抽搐toc < 5 mySignal = deviceReader ();myProcessedSignal =过程(mySignal);fileWriter (myProcessedSignal)结束disp (“信号输入终结”)
结束信号输入
发布(deviceReader)发布(fileWriter)

相关的话题