Tag: 音频

混合16位线性PCM流并避免削波/溢出

我试图将2个16位线性PCM音频流混合在一起,我似乎无法克服噪音问题。 我认为将样品混合在一起时它们会溢出。 我有以下function…… short int mix_sample(short int sample1, short int sample2) { return #mixing_algorithm#; } ……这就是我尝试过的#mixing_algorithm# sample1/2 + sample2/2 2*(sample1 + sample2) – 2*(sample1*sample2) – 65535 (sample1 + sample2) – sample1*sample2 (sample1 + sample2) – sample1*sample2 – 65535 (sample1 + sample2) – ((sample1*sample2) >> 0x10) // same as divide by 65535 其中一些产生了比其他产品更好的效果,但即使是最好的结果也包含了很多噪音。 任何想法如何解决?

c程序播放音频文件

你能给出一个示例代码来播放C语言的音频文件,以及需要哪些头文件? 我是这个概念的新手……我有兴趣了解这一点。

单声道到立体声转换

我在这里有以下问题:我得到一个表示音频数据的字节块(uint16_t *),生成它们的设备正在捕获单声道声音,所以很明显我在1声道上有单声道音频数据。 我需要将这些数据传递给另一个设备,这需要交错的立体声数据(因此,2个通道)。 我想要做的基本上是复制数据中的1个通道,以便立体声数据的两个通道都包含相同的字节。 你能指点我这样做的有效算法吗? 谢谢,f。

任何简单的VAD实现?

我正在为VAD(语音活动检测)寻找一些C / C ++代码。 基本上,我的应用程序是从设备读取PCM帧。 我想知道用户何时说话。 我不是在寻找任何语音识别算法,而只是用于语音检测。 我想知道用户何时说话以及何时完成: bool isVAD(short * pcm,size_t count);

从头开始的WAV文件合成 – C.

最近我在CS 101课堂上看到了一个video讲座,它启发我开始使用C语言中的WAV文件格式。我今天的项目一直是使用简单的数学正弦函数创建声音。 尽管有几个障碍,我的程序现在可以接受几个输入(波的频率,波的幅度,采样率等)并创建包含指定音高的wav文件。 但是,在我的电脑扬声器上播放这些音调时,会发出一种奇怪的,有节奏的砰砰声,这种声音会随着采样率的变化而变化。 在较高的采样率下,弹出声音的频率增加并变成恼人的呜呜声。 奇怪的是,弹出的声音在具有相同文件的不同计算机上是一致的。 下面我将发布用于生成WAV文件的代码。 任何可能导致这种现象的见解都将受到赞赏。 这可能只是我某处的一个愚蠢的错误。 🙂 #include #include #include #include #include #include struct WAVHeader { char ChunkID[4]; uint32_t ChunkSize; char RIFFType[4]; }; struct FormatHeader { char ChunkID[4]; uint32_t ChunkSize; uint16_t CompressionCode; uint16_t Channels; uint32_t SampleRate; uint32_t AvgBytesPerSec; uint16_t BlockAlign; uint16_t SigBitsPerSamp; }; struct DataHeader { char ChunkID[4]; uint32_t ChunkSize; }; void […]

使用Windows内置MP3解码器播放音频?

从Windows或Windows C + C ++开始,我如何使用Windows内置的MP3解码器? 我想播放一个mp3文件,而不必依赖任何其他第三方库,例如LAME.DLL。 我更新了问题以更好地适应我得到的答案,因为我非常喜欢它们。 相关问题。