模仿微信声音锁的实现(运用DTW算法)

article/2025/8/16 1:11:48

自己写了模仿微信声音锁的一个android程序,先录两段相同的语音信号作为模板,解锁时通过对比输入语音和该两段语音模板的相似度,如果相似度高则解锁成功。

程序界面如下,仿照微信设置,当然跟原版比效果略渣。

launcher界面:                                        录音界面:

  

解锁成功界面:


具体流程:

1.首先要用手机麦克风录制两段声音模板,提取出语音特征参数并保存,当然也要比较这两段语音的相似度,如果相似度不高则重新录制。

2.然后就可以尝试解锁了,同样用麦克风输入一段待识别语音,提取语音特征参数并与保存的模板比较,如果相似度高则弹出对话框提示解锁成功。

用到的算法:

预加重:为了加强语音在高频的部分,用一个高通滤波对信号进行处理,设输入信号为x(n),输出信号则为

y(n) = x(n) - ax(n - 1),这里我取a为0.9375。

分帧和加窗:程序设置的采样率是22050Hz,帧长为512,大概23ms为一帧,帧移为1/2。对每一帧用hamming窗来加窗,减小吉布斯效应。

端点检测:在录制的信号中检测语音段的起始点和终止点,计算每一帧的短时能量和短时过零率,并分别设置高低两个阀值,使用双门限联合判决的方法来检测语音的端点。具体方法恕不赘述。

提取MEL倒谱系数(MFCC):需要提取端点检测出来的语音段的MFCC参数,流程:对语音段每一帧做FFT,再经过N个MEL频率尺度的三角滤波器组得到N组输出(N一般取20到30个,这里我取26),对N组输出做对数运算,再进一步做离散余弦变换(DCT)即可得到MFCC。为了获取语音的动态特性,还可以对MFCC进行一阶和二阶差分,将MFCC和它的一阶二阶差分合并,作为这一帧的语音特征参数,这里我取MFCC长度为12,只取了一阶差分,所以每一帧的特征参数为一个长度为24的矢量。

DTW算法:Dynamic Time Warping,动态时间归整,该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题。把输入语音和模板语音的MFCC参数进行距离测量,距离小于某个阀值则可以判断这两段语音的相似度高。具体DTW介绍可以看看大神的文章:http://www.cnblogs.com/tornadomeet/archive/2012/03/23/2413363.html

总结:

因为这里我没有对信号降噪处理,所以在噪声比较小的情况下,能够正常识别并解锁,但是在噪声大的情况下就不能正确识别并解锁了。或者也可以用其他抗噪能力强的端点检测和特征提取方法。

其实用DTW算法做声纹识别是不太可靠的,有时候别人录制同样的语音也可以解锁成功。其实就算是微信的原始版本也一样,当然我不知道微信用的什么算法。

目前说话人识别比较常用的是GMM算法,但是GMM多用于文本无关的说话人识别。文本相关也可以用到HMM,但是HMM需要的训练数据比较多。而采用DTW算法则不需要太多的训练数据,当然也就造成识别效果不够理想的问题。如果能兼顾用户体验和识别效果的话,那想必是极好的,但还有待研究。

项目简介:

项目是用android studio开发,包含两个modual:

一个是界面程序APP,一个是包含上述算法的library模块。

个人能力有限,希望能借助开源的力量,改进这个项目。

项目地址:

https://github.com/Saber904/Lock


http://chatgpt.dhexx.cn/article/XXZ9Pvid.shtml

相关文章

微信声音锁会上传到服务器吗,微信声音锁:你再也不用担心忘记密码了

科客点评:声音登录并不是让用户重新说一遍原先设置的内容,而是可以根据声纹进行自动识别。 你微信密码是怎么设置的?用的QQ 密码?还是单独设立了一个?通常我们不会把微信登出,所以很少用到密码,以至于一旦需要用到微信密码的时…

微信声音锁会上传到服务器吗,微信的声音锁是什么样的操作?

原标题:微信的声音锁是什么样的操作? 说到微信的声音锁也许没有多少人注意过,今天简单介绍一下微信的声音锁功能。 声音锁的操作步骤: 在微信设置→账号与安全→声音锁,然后根据以下操作即可完成。 “声音锁”这个功能…

微信声音锁会上传到服务器吗,微信声音锁安全吗?微信声音锁可以换吗?

大家可能都知道了有一个微信声音锁,那么今天主要要跟大家分析的是微信声音锁安全吗?我想这个大家肯定想知道。那么微信声音锁可以换吗?关于这个问题小编都将在下文中为大家解答。详情请见微信声音锁安全吗?微信声音锁可以换吗? 1.微信声音锁安全吗? 微信声音锁…

微信声音锁会上传到服务器吗,微信声音锁原理是什么?微信声音锁安全吗?

微信声音锁是一种先进的技术,用户可以用声音给手机上锁,听起来还是很猛的哈。 关键词:声纹 所谓声纹(Voiceprint),是用电声学仪器显示的携带言语信息的声波频谱。现代科学研究表明,声纹不仅具有特定性,而且…

上线三年却很“鸡肋”的微信声音锁究竟做错了什么?

栏目简介:激荡六十年,人工智能已经起航。然而在未来面前,我们都还是孩子。究竟是“奇点临近”?还是泡沫行将破灭?为了解惑,《AI名人堂》将汇聚领航者智慧,和你一起探索前行的方向。 记者 | 杨丽…

微信隐藏功能系列:微信声音锁怎么设置?仅1%的人懂得用“嘴”登录微信

本期微信隐藏功能,教大家一个比较新奇的,微信声音锁怎么设置?用声音识别功能登录微信,相信大家应该没用过吧,平时我们登录微信都是密码或者手机验证登录,这次让大家看看微信声音锁怎么用! 当你的…

【密码学】PRP和PRF

PRP(pseudo random permutation,伪随机置换)和PRF(pseudo random function,伪随机函数)之间的区别,可以从定义来看 PRF 取一个密钥和集合X中的元素作为输入,输出值在集合Y中&#x…

【论文】使用文本分类的PRF

The Simplest Thing That Can Possibly Work: Pseudo-Relevance Feedback Using Text Classification 论文链接:https://arxiv.org/abs/1904.08861v1 ABSTRACT 本文试图用“最简单的事情”来解决数十年的伪相关反馈问题。 文章提出了一种技术,该技术基…

iOS BLE蓝牙开发数据传输协议详解 常用算法(AES加密 HMAC_hash PRF)

前言 这段时间参与了一款与蓝牙外设交互的项目, 以前没有涉及过数据传输方面的开发, 踩了不少坑, 同时也学到了很多东西. 此时, 项目也即将进入尾声, 有时间把这些记录一二. 本人才疏学浅, 如有错误,大佬轻喷. BLE4.0开发 这方面网上的Demo一大堆, 暂时不做太多的赘述, 只对…

qmake language qt 工程文件 配置文件 .pro .prl .prf .pri 词法 语法 for循环 判断语句 函数定义

目录 词法 string 1、数据类型 2、特殊处理的内置变量 3、转义字符 关键字:包括语法关键字、特殊变量 语法 变量 变量、属性、环境变量 变量使用 全局变量作用域 函数定义和使用 判断语句和循环语句 判断语句 判断语句 条件分支 if 案例 循环语句…

prf###.tmp临时文件导致磁盘资源不足

[问题现象] 客户反馈数据库服务器C盘空间严重不足,只有2GB可用空间。 [问题分析] 通过工程师分析检查,空间占用最多的文件是临时文件而且无法直接删除。临时文件格式是prf###.tmp ※ 此文件格式曾经遇到过,我有一些印象的。不过为指导工程师…

基于RTT压缩包C基础-不明白的接口PRF_ENV_GET __attribute__

回答----https://blog.csdn.net/weixin_42381351/article/details/115524780?spm1001.2014.3001.5501 用户APP里面 函数 struct custs1_env_tag *custs1_env PRF_ENV_GET(CUSTS1, custs1); 这个是一个指针 分配内存 但是右边是强转的 实际上右边结构体要小呀 安不安全&…

Qt之pro、pri、prf、prl文件简解

pro文件 QT工程的pro文件,在创建工程时由QTCreater自动创建,我们可以往里面添加内容,增加库文件的声明,包含路径、预处理器定义,生成目录,输出中间目录等等设置。 注释: 以“#”开始,到这一行结…

matlab sar 斑马图,星载滑动聚束SAR卫星姿态和PRF序列设计方法与流程

本发明涉及星载合成孔径雷达系统参数设计技术领域,特别涉及星载滑动聚束SAR卫星系统参数设计,具体是一种星载滑动聚束SAR卫星姿态和PRF序列设计方法,可用于星载滑动聚束合成孔径雷达系统参数设计。 背景技术: 合成孔径雷达可以全天…

PRF 快排系统

简介: PRF快排系统包含WEB管理后台、刷词软件,二者一对N配合使用。刷词软件部分基于模拟点击原理,具有稳定性,避免因刷词带来的K站风险。 WEB管理后台:基于JAVA语言开发,MySql数据库,支持Window…

Efficient Batched Oblivious PRF -Private Set Intersection

论文分享!《Efficient Batched Oblivious PRF with Applications to Private Set Intersection》--《高效批处理不经意伪随机数生成器及其在隐私集合求交中的应用》 今天介绍一篇CCS2016顶会上的文章,该会专注于信息安全领域实用性的论文。本文介绍的这篇…

密码学之PRP/PRF转换引理

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 本文将介绍密码学中的PRF、PRP等相关概念,并介绍 PRP/PRF 转换引理及其证明,希望读完本文后&#xf…

雷达基础知识:脉冲重复频率(PRF)

大家都知道,对于脉冲体制的雷达信号,它有一个重要的参数是脉冲重复频率(PRF)。那么,雷达的重频一般会有哪些变化呢? 重频固定 对 于常规雷达,PRF通常是不变的,也就是说脉冲重复间隔(PRI)是固定的。 示意图…

nifi入门(2)-nifi的简单使用示例

NiFi术语 为了谈论NiFi,用户或者是开发都应该熟悉一些nifi相关的关键术语,一些术语将会贯穿全文。 我们将在此重点介绍两个最重要的术语: FlowFile: 每条“用户数据”(即,用户通过NiFi获取或者是生成的,需要进行处理和…

Apache NiFi简介

一个易用、强大、可靠的数据处理与分发系统。基于Web图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集等功能 一、什么是NiFi? NiFi是美国国家安全局开发并使用了8年的可视化数据集成产品,2014年NAS将其贡献给了Apache社区&am…