近期搞了一个纯音测听,所谓纯音测听就是医学领域测双耳听力最小听力的一种检测方法。需求是在Android手机端搞,但是有没有提供固定频率和分贝的声音。所以声音源方面是代码生成。
那么问题来了。如何用代码生成指定分贝和频率的纯音那?
这就要追寻声音的本源了。生活中我们听到的声音是一系列不同频率不同分贝声音的组合体。这里可以成为复合音,而测试需要使用纯音,所谓纯音就是固定频率的声波。
声波,声波,So ,声音是波形的。数学中sin 、cos 函数是波形的。声音可以用正弦波表示,其实所有声音都是有正弦波组成,只不过纯音是固定频率的正弦波。
而在声音存储过程中,声音被记录成一组数据值。而这组数据值通过播放器播放出来就有了指定的分贝和频率。
结合网上资料总结实现思路:用sin 函数搞出基本正弦波。然后调节振幅,改变频率。用数组存起来,然后通过Android 播放类AudioTrack 播放出来。就实现声音的定制了。
Github项目地址:
https://github.com/shaoshuai904/SoundMeter