不请自来。
这个想法很好,但是缺乏基本的科学与技术知识。我就写一些较基础的声音记录存储知识吧。
我们都知道,声音是一种波。它是因为人的声带、喇叭振膜、乐器、空气流动等,周期性、快速地压缩空气形成的纵波。如下图是小提琴的声波波形:
观察这个波形,你会发现,它是一个随着时间而不断产生幅值变化的函数。这个函数的横轴是时间,而纵轴是空气振动的幅值,或者可以认为是音源压缩空气的压力变化值。
这样的话,如果有一个容器,能够存储声音,我们就要做到:
1,存储振幅(压力)值;
2,存储时间。
3,存储的振幅和存储的时间是一一对应的。
很遗憾,到目前为止,直接存储时间的容器,人类还没有发明哈哈。如果有的话,我先存上二十年,等快死的时候再放出来用用……
所以,你构想的这个音容,其实无法真实存在,因为时间怎么存储呢?我们只能找到存储压力值的存储器件,比如我们可以用一个轻质弹簧,然后找一个振膜,来得到声音的振幅(就像麦克风里的振膜),然后把这个振膜和弹簧用杆连起来,就可以让弹簧随着声音振幅而压缩或者延伸了,从弹簧长度就可以得到振幅大小。但是,这没法存储时间啊,假设在振幅最大时,弹簧压缩了1毫米,在此时声音中断,即使你立即停住弹簧不让它返回也没用,它只是停在了压缩1毫米的位置而已,记录了当时的振幅,而并不能反映整个小夜曲的振幅变化。
其实,电容器也仅能存储你给它充电结束时的电荷量,也不可能存储电量随时间的变化规律。比如你给电容器连上50Hz的正弦交流电充电1秒钟,结束时,电容上就只有最后时刻的剩余电荷,怎么操作也不可能从电容上得到50个正弦波形。
从数学上讲,声波、交流电,这些是二维平面上的函数(甚至三维、多维的),周期形式就是 ![[公式]](assets/df2c722c4ab7b348b210e5be48dc7c34.svg) ,有至少两个变化量;而电量、振幅,只是一个一维的单变量 ![[公式]](assets/b8f9a10b90b706b82e449b3b78f25ba6.svg) ,要想用一个单变量存储一个函数,是不可能的。
插个分割线,继续。
那么,要存储随时间变化的振幅值,就需要把时间转换为其他形式,比如用空间来代表时间。你看上图的小提琴声波波形图,其实这个波形图本身就是一个声音的存储形式,它把连续的时间变化,转换成了线性的空间横坐标,如果画在纸上,就是用纸张上(横轴)的1厘米代表了1毫秒,用一张纸的宽度实现了10毫秒的时间记录。如果能够把一首歌任意时刻的振幅都记录在一张足够大的纸上,我们就能得到这首歌的声音函数图形,其实也就是存储了声音。再有一个还原设备的话,我们就能把声音还原出来了。
近两百年前,人类就明白了这一点,从而发明了留声机。最早的留声机,使用一个振膜来把声波转换成振动,振膜连接一根针,针顶在一个蜡盘上,在声音记录时,蜡盘匀速旋转,针就会随着振膜振动在蜡盘上刻下一根连续的螺旋线,螺旋线的左右凹槽反映了声波的振幅。就像下图这样:
其实,你把螺旋线拉直了,它就是一个声波的函数图形,和在纸上画的并没有本质区别。
放音时,其实就是录音反过来,匀速旋转蜡盘,唱针随着波形凹槽振动,带动放音的振膜振动,就会得到原来的声音了。
实用中,蜡盘会经过翻印,从而得到硬质塑料制的唱片,否则蜡盘不耐磨损,放不了几次,翻印后就可以成千上万次播放了。这种唱片,就是黑胶唱片。我们可以把它叫做你说的音容也不为过。
黑胶唱片已经有一百多年的历史了。早期,放唱机大部分连电都不用,因为发声的振膜,振动由唱针驱动,不需要电。盘片的匀速旋转,用手工摇动,这就是手摇电唱机。在今天的电影里,我们还能见到这种手摇唱机。而生活中,黑胶唱片已经被新的CD、数字存储等取代,但是因为怀旧的情怀,仍旧有生产,而老的经典黑胶,已经在收藏市场上涨到几百甚至上千一张。当然,现在的黑胶唱机,已经都是电驱动,还有放大器、均衡器、滤波器等电子器件,从而可以得到更好的音质。
而且,这种技术深刻影响了今天的CD、DVD,这两种光盘也是通过盘片中的螺旋线上的微小凹坑记录信息的,其实与黑胶唱片原理一样。只不过因为信息密度更高,凹坑更小,改用了激光来记录和读取。
分隔线二,继续。
我们回到题主原来构想的方案,用电容来存储声音。
从前面的讨论中,会发现,使用单个电容是没法存储声音的,因为我们无法存储振幅随时间的变化规律。那么怎么办呢?
一个办法是用其他方法存储电场。比如用静电。找一根丝线,或者纸条也行。用麦克风把声波振幅转换为电压,用一个静电放电器件,转印到丝线或者纸条上。转印静电时,匀速拉动丝线,录音结束后,在丝线或者纸条上就会得到各处不一样的静电,它的电场强度是随着时间而变化的。不要怀疑这样的技术的可行性,事实上激光打印机就是通过在纸张上转印静电场工作的。那么为啥实际上没有这样的声音存储技术呢?因为一是静电场不稳定,在潮湿环境下几分钟静电就跑光了,存不久;二是随便这么一录音,丝线或者纸带就是数米甚至数百米长,不好拿。你又不能把它们缠起来,因为一缠绕丝线间电场互相感应,就全白搭了。
所以人们发明了磁带。通过把声波转换为磁场,用磁头转印到磁带上的磁粉中。磁带为啥可以缠绕在一起?因为磁粉具有很强的矫顽力,即使贴在一起也不会有大的影响,除非用强磁场。
那么,单纯用电容怎么记录声音呢?也是有办法的。我们看声波波形,它是连续变化的。如果我们用1个电容,只记录1秒钟的声音,假设声波的频率是100Hz,它1秒钟振动100个周期,显然不能得到整个时间段的信息,只能得到1秒钟结束时的振幅大小。那么如果我们有1000个电容呢?我们可以把1秒钟分成1000份,1份1毫秒,然后这样干:在时刻0,记录振幅,存储在第一个电容;在时刻1,记录振幅,存储在第二个电容;时刻2存储在第三个电容,……最后,我们就得到了每个毫秒的振幅存储。
工程上,这叫做采样。如下图:
图上b是原始波形,a是我们采样得到的幅值(c不要管它)。显然,波形a和原始波形b并不一样,a是不连续的,b是连续的。但是,a的外形和b相差并不大(称作包络线),如果我们采样的次数足够多,就能够精确反映b的变化趋势。这就和每隔10分钟测一次温度,就能得到全天的温度变化趋势图一样。
根据采样原理,要得到频率为f的波形,采样频率至少要达到2f才行。也就是说,要记录到100Hz的声波,至少需要200Hz的采样频率,就是1秒采样200次,需200个电容记录。
人耳能听到的声音范围是20Hz~20kHz,一般语音频率范围为300Hz~3.4kHz,女高音可以到10kHz,乐器的泛音轻松可达15kHz以上。我们对音质要求低一点,按达到5kHz算(比电话座机的音质好一丁点),采样频率需达到10kHz,就是1秒1万次采样。如果要记录3分钟,我们需要3x60x10000=180万只电容!这已经不是我们能够轻松搞定的了……
那么就彻底搞不定了吗?No,No,工程师们总是有办法的。其实电容虽然多,但如果我们能把电容做得足够小,几百万只乃至几亿只电容都不是事。提到把电路元件做小,我们立刻就能想到微电子技术、集成电路。是的,这个也是可以用集成电路实现的。
集成电路技术中,电容其实并不容易做,因为集成电路的表面积太小,很难实现大面积的极板,而且容易漏电,所以实际上集成电路也没法实现非常多的电容。但是工程师们找到了EPROM技术,通过EPROM实现了和电容类似的电量存储。EPROM技术如下图:
EPROM中的浮栅、控制栅等都做在多晶硅基板上。通过一定的技术,可以把电子转移到浮栅中(叫做写入),而且写入后,可以保持浮栅的绝缘,从而使得电量可以接近永久地存储在浮栅中(近一百年),和电容的电量存储有点类似。然后通过一定的方法检测浮栅有没有电就可以了。因为体积过于微小,存不了多少电量,电路也无法做复杂,所以这个没法直接检测其中的电量多少,只能判断是否有电。于是,我们这个器件,就变成了数字电子技术,有电的时候我们可以认为是1,无电的时候可以认为是0。这样,成千上万个EPROM单元中,就可以存储二进制数字了:10001101010101100011110100101011011……
我们的音容机,就可以做成这样,首先用麦克风把声波转换成电压,然后进行模拟-数字转换,得到声波的数字信号,然后把这一连串的1和0存储到无数个EPROM单元中。需要放音时,把数字取出来,然后经过数字-模拟转换,变成电流驱动喇叭放音。
这种存储芯片,后来经过很多工程师的努力,性能越来越好,容量越来越高。
现在,用这种技术发展来的芯片,通称为flash存储芯片,体积可以做得像指甲盖一样大,容量达上百G,可以作为手机存储;也有些,做成USB口,叫做优盘;而采用这种技术的音容机器,我们叫它数字录音笔。
Original url: Access
Created at: 2019-12-19 11:42:00
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论