读入声音文件,添加回声,并写入新的声音文件

Posted

技术标签:

【中文标题】读入声音文件,添加回声,并写入新的声音文件【英文标题】:Read sound file in, add echo, and write new sound file 【发布时间】:2014-03-07 14:33:01 【问题描述】:

我正在尝试完成以下工作:

    将声音文件读入内存 将其分成块并在预定义的偏移量处添加回波(2 个可能的偏移值)。 另存为新文件

我有以下代码将声音文件读入内存:

NSURL   *urlToCAF = [NSURL URLWithString:@"simple-drum-beat.caf"];

ExtAudioFileRef caf;
OSStatus    status;

status = ExtAudioFileOpenURL((__bridge CFURLRef)urlToCAF, &caf);
if(noErr == status) 
    // request float format
    const UInt32 NumFrames = 1024;
    const int ChannelsPerFrame = 1;  // Mono, 2 for Stereo

    // request float format
    AudiostreamBasicDescription clientFormat;
    clientFormat.mChannelsPerFrame = ChannelsPerFrame;
    clientFormat.mSampleRate = 44100;

    clientFormat.mFormatID = kAudioFormatLinearPCM;
    clientFormat.mFormatFlags = kAudioFormatFlagIsFloat | kAudioFormatFlagIsNonInterleaved; // float
    int cmpSize = sizeof(float);
    int frameSize = cmpSize*ChannelsPerFrame;
    clientFormat.mBitsPerChannel = cmpSize*8;
    clientFormat.mBytesPerPacket = frameSize;
    clientFormat.mFramesPerPacket = 1;
    clientFormat.mBytesPerFrame = frameSize;

    status = ExtAudioFileSetProperty(caf, kExtAudioFileProperty_ClientDataFormat, sizeof(clientFormat), &clientFormat);
    if(noErr != status)  /* handle it */ 

    while(1) 
        float   buf[ChannelsPerFrame*NumFrames];
        AudioBuffer ab =  ChannelsPerFrame, sizeof(buf), buf ;
        AudioBufferList abl;
        abl.mNumberBuffers = 1;
        abl.mBuffers[0] = ab;

        UInt32  ioNumFrames = NumFrames;
        status = ExtAudioFileRead(caf, &ioNumFrames, &abl);

        if(noErr == status) 
            // do something here
        
    

    // later
    status = ExtAudioFileDispose(caf);
    if(noErr != status)  /* hmm */ 

您能否向我提供必要的代码以将回声添加到每个块中,然后将声音另存为新文件?

我很感激。

【问题讨论】:

【参考方案1】:

这接近于“请为我编写代码”

如果您在缓冲区中有声波,则添加回声是微不足道的:

out[k] = in[k] + in[k-30]

保存到文件我很确定您可以通过 Google 找到。试着让你的问题针对一件具体的事情提出。

我建议查看http://theamazingaudioengine.com/——它让生活更轻松!

【讨论】:

以上是关于读入声音文件,添加回声,并写入新的声音文件的主要内容,如果未能解决你的问题,请参考以下文章

使用matlab进行回声处理(三重回声)-数字信号处理课设

Moviepy模块之视频去除声音添加音乐

NAudio 拆分 wav 文件问题。其他所有音频文件声音失真,而其他音频文件清晰

AVAudioPlayer 播放问题,两种声音作为回声

Android GCM PushNotification - 在应用程序中添加添加自定义声音文件

会声会影如何制作回声特效