【问题标题】:Sample rate of the resulting wav after combing 2 wav files合并 2 个 wav 文件后生成波形的采样率
【发布时间】:2012-02-13 20:31:32
【问题描述】:

我在 VS2010 中手动执行以下操作。 1. 读入 2 个波形文件,比如“1.wav”和“2.wav”。 2. 将 2.wav 插入 1.wav 的中间。 3. 将结果波形流写入输出文件“out.wav”。

我现在可以使用以下结构成功读取波形文件

typedef struct {
    char ChunkID[4];        /* RIFF Header      */ //Magic header
    unsigned long ChunkSize;      /* RIFF Chunk Size  */
    char Format[4];        /* WAVE Header      */
    char Subchunk1ID[4];         /* FMT header       */
    unsigned long Subchunk1Size;  /* Size of the fmt chunk                                */
    unsigned short AudioFormat;    /* Audio format 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM */
    unsigned short NumChannels;      /* Number of channels 1=Mono 2=Sterio                   */
    unsigned long SampleRate;  /* Sampling Frequency in Hz                             */
    unsigned long ByteRate;    /* bytes per second */
    unsigned short BlockAlign;     /* 2=16-bit mono, 4=16-bit stereo */
    unsigned short BitsPerSample;  /* Number of bits per sample      */
    char Subchunk2ID[4]; /* "data"  string   */
    unsigned long Subchunk2Size;  /* Sampled data length    */
    BYTE Data[18000];
} WavFile;

但是2个wave文件的一些参数不一样。比如1.wav的SampleRate是8000,2.wav的SampleRate是44100,那么out.wav的SampleRate是多少?

【问题讨论】:

    标签: c++ audio wav sample-rate


    【解决方案1】:

    out.wav 的采样率是您必须明确定义的。在您的示例中,您可以选择 out.wav 为 44100,两者中的更好,但您需要通过插值或在其间添加零来对 1.wav 进行上采样。或者,您可以将其保持在 8000 并通过低通滤波器运行它以滤除超过奈奎斯特(新采样率的一半)的频率,然后将样本丢弃在中间,从而降低采样 2.wav。无论哪种方式,您都必须明确决定要做什么。

    更多信息 - https://ccrma.stanford.edu/~jos/resample/

    【讨论】:

    • 另外,在下采样的情况下,建议在下采样前用低通滤波器滤除采样率(奈奎斯特频率)一半以上的所有频率,以避免混叠。
    • 我对数字音频处理的了解不如我对数字图像处理的了解多,但是在其他样本之间插入零和丢弃样本对我来说听起来并不合理。你能详细说明一下吗?我对数字图像处理的差异感兴趣。
    • @krynr,我认为你是对的 - 插入零听起来不合理。只要像Thies Hedecke所说的那样应用低通滤波器,丢弃样本就可以了,否则你会得到令人讨厌的声音混叠。图像处理也是如此。
    • 在这里查看。朱利叶斯·史密斯是大师! ccrma.stanford.edu/~jos/sasp/Upsampling_Stretch_Operator.html是的,我忘了提到低通滤波器——非常重要
    猜你喜欢
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2012-06-25
    • 2012-10-23
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多