智能语音录制程序——窃听神器(源码放送!)

2023-10-09 02:20

本文主要是介绍智能语音录制程序——窃听神器(源码放送!),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 

       我这人从小有个坏毛病,就是喜欢偷窥别人隐私。当然,在道德上,我时刻要求自己做一名正人君子,只不过是心理上有这癖好罢了。所以我从小就对窃听、窃视、黑客技术、破解技术等疯狂着迷!实际上这也是我走上程序员之路的一个重要原因!

       或许正如弗洛伊德所说的那样,潜意识里面暗藏的原始欲望,是我们一切行为背后的真正动因。就像不可一世的希特勒和他野心勃勃的奋斗一样,归根到底只是因为他是一个自卑的抖S。

2.

        今天说的这个事呢还要从两年前说起。那时我还在念大学。说来也巧,咱们宿舍的4个人都有一个共同的毛病——梦呓。(也就是说梦话啦。)一开始我就发现了,他们三个说梦话我都听到过,而且好几次都是大段的说,信息量很大。可是由于大家都是来自五湖四海,口音各不相同,要一口气听懂真心很难,就算偶尔听懂了几句,第二天醒来又忘记了。结果后来大家一说起来,我自己也有说梦话,而且说得绘声绘色,跟演电影似的!

       弗洛伊德说:梦是通往潜意识的桥梁。梦里藏着连你自己都不知道的心理秘密。

       别人的梦里藏着什么不可告人的秘密?自己在梦境又中透露了什么无法言说的隐私?——这一切激起了我内心深处的强烈欲望!

       请原谅一个变态程序员的窥私欲!

3.

       所以后来我就一直想写一个程序,能够在夜深更阑的时候,根据音量的大小,智能的录制声音——这样一来就能把那些梦话一网打尽!然后再来分析其中隐藏的秘密,就如同探囊取物了。

       可是,这样一个程序要怎么写呢?还是到园子里找找资源。

       后来找到了一篇:实现语音视频录制(demo源码)

      于是研究了一段时间,终于如愿以偿的写出了自己的窃听神器!

       

4.原理与实现

      持续采集麦克风得到音频帧,然后根据傅里叶变换得出音频帧的响度大小。当响度大于指定值时,开启录制——将音频帧写入MP3文件;当响度低于指定值时,保持检测指定帧数,若均低于指定值,则关闭录制,此时得到一个音频文件。

       配置文件如下:

复制代码
<?xml version="1.0" encoding="utf-8" ?>
<configuration><appSettings><!--开启录音的音量阈值--><add key="DB2Open" value="30"/><!--关闭录音的音量阈值--><add key="DB2Close" value="30"/><!--低分贝持续检测帧数--><add key="checkCount" value="80"/></appSettings>
</configuration>
复制代码

      首先,保持采集麦克风。代码如下:

复制代码
public Form1()
{InitializeComponent();this.microphoneCapturer = CapturerFactory.CreateMicrophoneCapturer(0);//采集器,启动程序时即开启this.microphoneCapturer.AudioCaptured += new ESBasic.CbGeneric<byte[]>(microphoneCapturer_AudioCaptured);//预定采集事件this.microphoneCapturer.Start();//开始采集//初始化录制器所需的参数this.audioFileMaker.Initialize("test.mp3", this.microphoneCapturer.SampleRate, this.microphoneCapturer.ChannelCount);
}
复制代码

      其中AudioCaptured事件以20毫秒的周期触发,参数即为麦克风采集得到的PCM数据。而智能录音的逻辑则主要位于AudioCaptured的事件处理函数中。

复制代码
 void microphoneCapturer_AudioCaptured(byte[] data)
{this.audioFileMaker.StartMakeFile(data);//录制器安插此处,通过IsWorking参数来控制其工作状态this.frameCounter.Start(); //帧数计数器安插此处,用于记录在低分贝时期内的总帧数。通过IsWorking参数来控制其工作状态this.decibelDisplayer1.DisplayAudioData(data);//分贝显示器显示音量this.label_db.Text = this.decibelDisplayer1.Volume.ToString();//显示当前音量this.label_RecordSign.Text = this.audioFileMaker.IsWorking ? "正在录音" : "未录音";this.label_RecordSign.ForeColor = this.audioFileMaker.IsWorking ? Color.Blue : Color.Red;//当音量高于开启值时,打开录制器if (this.decibelDisplayer1.Volume > int.Parse(ConfigurationManager.AppSettings["DB2Open"])){this.audioFileMaker.IsWorking = true;}//当记录的低分贝帧数达到一定值时,关闭两个计数器,然后总结这段时间内的帧状况if (this.lowDBFrameCounter.Count > int.Parse(ConfigurationManager.AppSettings["checkCount"])){//若低分贝帧数与总帧数一直,即该段时间内持续低分贝,则关闭录制if (this.lowDBFrameCounter.Count == this.frameCounter.Count){this.audioFileMaker.IsWorking = false;                   }this.frameCounter.IsWorking = false;this.lowDBFrameCounter.IsWorking = false;return;}//当音量低于阈值时,开启低分贝计数器与帧数计数器的计数if (this.decibelDisplayer1.Volume < int.Parse(ConfigurationManager.AppSettings["DB2Close"])){this.frameCounter.IsWorking = true;this.lowDBFrameCounter.IsWorking = true;this.lowDBFrameCounter.Start();}            }
复制代码

 5.后记

      有了这个程序之后,每晚睡前开启,第二天一早定能斩获颇丰!

      这些梦话往往有着巨大的信息量,而当被一个精神分析的高手掌握后,内心的秘密更是无处遁形,赤裸裸的人性一览无余!

      而且,有时白天上课的时候也开启,偶尔还会有些意外的收货,这个就不方便多说了。

      源码:点击下载

      这个程序其实还可以进一步完善,不仅智能录音,还可以智能录像,只要你插上一个USB摄像头,便可根据动静录制监控视频。除此之外,再与图像分析技术集成,更可以完成智能防盗等高端功能!

      有兴趣实现智能录像的朋友,可以参考:实现语音视频录制(demo源码)

   ———————————————————————————————————————————

      附推荐阅读:学妹来实习,看我如何步步为营!

 

 

出处:http://www.cnblogs.com/caojueming/p/5867718.html

转载于:https://www.cnblogs.com/mq0036/p/6514894.html

这篇关于智能语音录制程序——窃听神器(源码放送!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169665

相关文章

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕