【问题标题】:How to amplify Audio Data in Oboe onAudioReady Method?如何在双簧管 onAudioReady 方法中放大音频数据?
【发布时间】:2019-03-27 19:06:34
【问题描述】:

我想使用双簧管库放大麦克风录制的音频数据。 我像这样创建了 AudioEngine.cpp:https://github.com/google/oboe/blob/master/samples/LiveEffect/src/main/cpp/LiveEffectEngine.cpp 这是具有 audioData 的类:

DataCallbackResult
AudioEngine::onAudioReady(AudioStream *oboeStream, void *audioData, int32_t numFrames) {

    /* some code */


 // add your audio processing here

    return DataCallbackResult::Continue;
}

【问题讨论】:

  • 我尝试了 0.2f 而不是 2,但它仍然严重失真。

标签: android c++ audio oboe


【解决方案1】:

在 LiveEffect 示例中,录制和播放流都是 AudioFormat::I16 即 16 位整数。在这一行中,您将投射到float

auto *outputData = static_cast<float *>(audioData);    

这会导致您听到的失真,因此只需转换为 int16_t 并乘以恒定幅度。

确保检查放大后的样本值不高于INT16_MAX,否则会出现环绕和失真。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多