Article
利用Python让你的电脑发出超声波
00 分钟
2020-2-24
2023-5-21
type
status
category
date
slug
summary
tags
icon
Last edited time
May 21, 2023 07:57 AM

题目描述

这是选到的题目
notion image
其实刚拿到题目还是有点懵的,感觉挺难的。
但这个题目的重点是除螨,发出超声波其实是次要的 = =!然而我重心放在了“让电脑发出超声波”上了
所以我标题就是Python发出超声波了。

实现方式一

让电脑发出超声波第一种方式
利用python的winsound模块(仅支持windows平台
notion image
所以还是挺简单的嗷

实现方式二

我觉得不可能“这么简单”(找错方向
所以我决定寻找另一种方式来解决让电脑发出超声波。
我决定分步解决这个问题。

第一步、超声波是什么

百度词条中提供了超声波的定义
notion image
结论:超声波是一种频率高于20000Hz的声波

第二步、笔记本可以发出超声波吗

百度上能找到的资料寥寥无几,这是为数不多的回答。也不知道真实性。
notion image
很显然,这样的回答是无法解决问题的。所以本着学习的精神,我使用了404网站——google.com
notion image
得到以下回答
notion image
并且通过进一步的资料查询,知道了
结论:现代声卡是能够发出超过96Khz的声波的

第三步、如何使用Python让笔记本发出超声波

google了一下
notion image
找了很久之后,找到了这样一个回答
notion image
说是有一个软件是可以生成超声波,并存储为WAV格式的文件,使用音频播放器播放的。但是我们要用python来实现,显然不能直接用它。但我还是下载了这个软件,探索它生成超声波的方式。
notion image
于是我用这个软件生成了一段超声波 于是乎我便可以使用笔记本的扬声器来播放1.WAV文件来播放超声波了,但这并不是使用Python完成的方案,所以还得想其他的方法。
notion image
然后,我注意到,这个软件的官网上写到
Mac Audio Toolbox is an audio function generator for the Macintosh Using no additional hardware, you can produce sine, square, triangle, and sawtooth waveforms of any frequency up to 22 KHZ, as well as generate noise-both pink and white
翻译:Mac Audio Toolbox是Macintosh的音频函数生成器。无需使用其他硬件,您就可以生成任何频率高达22 kHz的正弦波,方波,三角波和锯齿波,并产生粉红和白色噪声。
通过这个软件,我大胆的猜测,超声波音频是可以通过高频率的波形来获得的,那么应该有一种方式可以把波形转换为音频文件, 我又顺便百度了以下WAV格式文件,得到以下结果:
notion image
 
原来如此!WAV文件保存的就是波形信息,那么只要使用Python通过某种方式生成超声波WAV文件应该就可以了!
 
再次查询资料,发现Python处理WAV文件是有先例的!甚至Python有一个wave库,就是专门来处理wav文件的!看来找到了正确的方向!
notion image
结论:通过python的wave库,来生成超声波音频文件
 

声波文件的简述

一、如何通过声波表示声音

数码音频系统是通过 将声波波形转换成一连串的二进制数据 来再现原始声音的,实现这个步骤使用的设备是模/数转换器(A/D)它以每秒上万次的速率对声波进行采样,每一次采样都记录下了原始模拟声波在某一时刻的状态,称之为样本。将一串的样本连接起来,就可以描述一段声波了,把每一秒钟所采样的数目称为采样 频率或采率,单位为HZ(赫兹)。

二、什么是WAV文件

notion image

三、WAV文件如何表示声音

通常使用三个参数来表示声音,(1)采样位数,(2)采样频率和(3)采样点振幅。

(1)采样位数

也叫采样字节长度(单位:比特),是存储每个采样值所用的二进制位数。采样值反应了声音的波动状态。采样位数决定了量化精度。采样位数越长,量化的精度就越高,还原的波形曲线越真实,产生的量化噪声越小,回放的效果就越逼真。常用的量化位数有4、8、12、16、24。量化位数与声卡的位数和编码有关。

(2)采样频率

采样频率越高所能描述的声波频率就越高。 采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。在当今的主流采集卡上,采样频率一般共分为 22.05KHz、44.1KHz、48KHz三个等级,22.05 KHz只能达到FM广播的声音品质,44.1KHz则是理论上的CD音质界限,48KHz则更加精确一些。对于高于48KHz的采样频率人耳已无法辨别出 来了,所以在电脑上没有多少使用价值

(3)采样点振幅(声道数量)

使用的声音通道的个数,也是采样时所产生的声音波形的个数。播放声音时,单声道的WAV一般使用一个喇叭发声,立体声的WAV可以使两个喇叭发声。记录声音时,单声道,每次产生一个波形的数据,双声道,每次产生两个波形的数据,所占的存储空间增加一倍。

(4)声音文件数据量的计算公式

生成超声波文件

 

我使用了pygame提供的API进行播放音频

 

检验超声波文件

此处是我组员写的一个程序,用来检验生成的文件是否为超声波文件的(声波频率是否超过20000

结语

虽然就这样草草的结束了,但心有不甘,想着什么时候有空了,一定要把除螨给完成了。
 

评论