Частота дискретизации результирующего wav после прочесывания 2 wav файлов - PullRequest
0 голосов
/ 14 февраля 2012

В VS2010 я делаю следующее вручную.1. Прочитайте в двух волновых файлах, скажите «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 волновых файлов не совпадают.Например, если SampleRate 1.wav равен 8000, SampleRate 2.wav равен 44100, что будет SampleRate of out.wav?

1 Ответ

1 голос
/ 14 февраля 2012

Частота дискретизации out.wav - это то, что вам нужно определить явно. В вашем примере вы можете выбрать ваш out.wav равным 44100, лучшее из двух, но вам нужно будет повысить частоту дискретизации 1.wav путем интерполяции или добавления нулей между ними. В качестве альтернативы, вы можете сохранить его на уровне 8000 и уменьшить частоту дискретизации 2.wav, пропустив его через фильтр нижних частот, чтобы отфильтровать частоты больше, чем Найквист (половина новой частоты дискретизации), а затем отбросить сэмплы в середине. В любом случае вам придется явно решить, что вы хотите сделать.

Подробнее - https://ccrma.stanford.edu/~jos/resample/

...