【问题标题】:Matlab audioread/audioplay into C/C++ through CoderMatlab audioread/audioplay 通过 Coder 转成 C/C++
【发布时间】:2015-04-24 12:48:27
【问题描述】:

我正在做一个 matlab 项目,我在其中向音频文件(mp3、wav)添加效果。因此,我使用 matlab 函数 audioread(..) 将文件加载到数组中。

现在,我想将其导出到 Android。我读到最好的方法是使用 Matlab Coder 将 matlab 代码导出到 C/C++(或 Java),然后将其导出到 android(或多或少)。

但是,函数调用 audioplayer(和播放)不受支持(这就是代码生成准备问题所说的)。

我能做什么?一个想法是直接使用 c++ 代码播放声音(所以在代码生成之后)。但是如何使用 c++ 从数组中播放声音?

或者如果你们有其他想法而不接触 c++ 代码(所以直接在 matlab 中解决问题),我会很高兴听到它!

谢谢,祝你有美好的一天!

【问题讨论】:

    标签: android c++ matlab audio matlab-coder


    【解决方案1】:

    在这种情况下,我通常建议将您的代码分为两部分:

    1. 音频文件 I/O 和音频播放的部分(即 OS-specific 部分)
    2. 您将使用 MATLAB Coder 为其生成代码的计算内核。这部分通常将表示图像或音频数据的数字数组作为参数。

    我已经使用这种方法来利用 MATLAB Coder 生成的代码在 Android 上进行图像过滤。

    如 Navan 所说,要执行第 (1) 部分,您需要使用 Android API 来读取音频文件、将数据写回文件并根据需要播放它们。请注意,我没有进行过大量的 Android 开发,因此完成这些任务可能需要一些研究或比较困难。

    一旦数据格式适合 (2) 中的函数(可能是数值数组),您就可以使用 JNI 调用生成的代码来添加所需的效果。生成的代码会将数据返回给 Java 代码,然后您可以使用 Android API 对其进行编码、播放或随心所欲地使用它。

    【讨论】:

    • 确实,潜在的困难部分是查看如何从数组读取/播放音频文件。我会努力弄清楚的。
    【解决方案2】:

    播放音频通常使用平台相关库。在 DSP System 工具箱中,有一个名为 dsp.AudioPlayer 的音频播放器对象,它支持 C 代码生成。但我相信这在生成的代码中使用了依赖于平台的库,并且让它在 Android 中工作并不容易。您最好找到一个适用于 Android 的音频播放器库,并在生成代码后手动将其挂钩。

    【讨论】:

    • 感谢您的回答,这就是我的想法,我需要查找是否可以在 Android 中从数组播放/读取音频文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 2019-05-05
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多