日期:2014-05-18  浏览次数:21218 次

通过程序让电脑的声音放大N倍
我的本本声音非常小,但又不想用低音炮,前段时间在搜狐上看视频的时候,发现他们的网页播放器竟然可以将声音持续放大至500%以上,现在网上也有类似的软件,比如说“电脑扩音器”(我没用过,只听过介绍),现在想知道下C#能不能做到这种功能,以及用什么去实现,winform中的最好,请各位大虾赐教下子

------解决方案--------------------
写程序修改你的输出数据,对输出到播放设备的数据放大

------解决方案--------------------
这和硬件无关的,声音信号是一系列波形,只要把振幅放大就可以实现扩音。
因为程序里得到的是经过模数转换之后的数据,所以只要把数据乘上一定的系数就可以实现声音信号放大,其实很简单的,但是声音的放大有极限的,缩放的太厉害音质会明显变差,如果加上去噪之类的算法应该会好点。

------解决方案--------------------
不是俺们扯偏,而是你不明白你要做的东西实际上有两种方式
1。直接放大波形-----这个效果有限
2。编写声卡驱动,直接使用驱动修改声卡输出功率

实际上我们提一个词,功放(功率放大器)你就明白了,问题的关键在声卡的功率上面
------解决方案--------------------
直接放大波形的算法:

buff为声音数据,scale为缩放量
C/C++ code
void WaveScalse(short *buff,int len,int scale)
{
    int i;
    float floatdata;
    for(i = 0;i < len; i++)
    {
        floatdata = buff[i]*scale;
        if(floatdata <  -32767.5)
        {
            floatdata = -32768;
        }
        else if(floatdata > (FLOAT)32766.5)
        {
            floatdata = 32767;
        }
        buff[i] = (short)floatdata;
    }
    
}

------解决方案--------------------
LZ的这个想法应该可以实现,不想有些人说的 可以无限扩大,系统的最大音量厂商在出厂时候肯定给有限制的, LZ的想法有点像给CPU超频