如何使用Naudio c#使声音更响亮?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Naudio c#使声音更响亮?相关的知识,希望对你有一定的参考价值。

我试图在我的代码中增加声波的幅度。我有缓冲区,包括制作波形所需的所有字节。

这是我的音频播放代码:

public void AddSamples(byte[] buffer)
{
   //somehow adjust the buffer to make the sound louder 

    bufferedWaveProvider.AddSamples(buffer, 0, buffer.Length);
    WaveOut waveout = new WaveOut();
    waveout.Init(bufferedWaveProvider);
    waveout.Play();

    //to make the program more memory efficient
    bufferedWaveProvider.ClearBuffer();
 }
答案

您可以转换为ISampleProvider,然后通过将其传递到增益> 1.0的VolumeSampleProvider来尝试放大信号。但是,如果任何样本超过0,最终可能会出现硬剪裁。

WaveOut waveout = new WaveOut();
var volumeSampleProvider = new VolumeSampleProvider(bufferedWaveProvider.ToSampleProvider());
volumeSampleProvider.Volume = 2.0f; // double the amplitude of every sample - may go above 0dB
waveout.Init(volumeSampleProvider);
waveout.Play();

一个更好的解决方案是使用动态范围压缩器效果,但NAudio没有开箱即用。

另一答案

我也有类似的问题。但是可以通过这个链接完成它:

http://mark-dot-net.blogspot.hu/2009/10/playback-of-sine-wave-in-naudio.html

如果你知道关于你的声音的所有细节我认为这会有所帮助

以上是关于如何使用Naudio c#使声音更响亮?的主要内容,如果未能解决你的问题,请参考以下文章

相同的声音重叠使其非常响亮。提示与技巧?

C# NAudio 3D 声音

如何使用 Sox 检测音频文件中的响亮声音?

如何使用 NAudio 将声音文件加载到内存中并稍后使用?

在 C# 中确定何时播放响亮的声音

使用 NAudio 在特定频道上播放声音