资源简介 (共31张PPT)项目3声纹识别:让虚拟机器人能识人项目背景声纹识别是一种新型的技术手段,与其他生物识别相比,其优势主要体现在以下几点:与指纹识别相比,声纹识别为非接触式识别,更加便捷且安全;与人脸识别相比,声纹识别能有效降低隐私被侵犯的风险;声纹识别只需要麦克风就可以进行声音的采集,能有效降低识别成本。基于声纹识别的多种优势,本项目将使用讯飞开放平台,通过调用声纹识别接口,实现智能门禁系统。教学目标(1)了解声纹识别的概念。(2)了解声纹识别的类型。(3)了解声纹识别的工作原理。(4)理解声纹识别的评估指标。(5)能够编写程序,调用声纹识别接口,实现声纹识别。项目分析(1)从声纹识别的定义、分类、工作原理和评估指标等方面,认识声纹识别。(2)在讯飞开放平台上创建声纹识别应用,并获取APPID、APIKey、APISecret信息。(3)配置智能门禁系统中用到的基本请求参数,包括APPId、APISecret、APIKey、声纹识别请求URL等。(4)创建声纹特征库,用于存储声纹特征信息。(5)录制声纹特征音频,并将声纹特征信息添加到声纹特征库中。(6)查询声纹特征列表,查看是否成功将声纹信息添加到声纹特征库中。(7)进行声纹特征比对,判断来访人员是否能通过门禁系统。知识准备知识点1:什么是声纹识别声纹识别是生物特征识别的一种,每个人的声纹图谱都有其特定的特征,通过使用专用的电声转换设备将声波特征绘制成波谱图形,与已经注册的声纹模型对比,从而区分不同的个体,实现身份校验功能。知识点2:声纹识别的类型1.按应用场景分类2.按音频内容分类文本提示(Text-Prompted)文本相关(Text-Dependent)文本无关(Text-Independent)知识点3:声纹识别的工作原理声纹识别系统一般由预处理、特征提取、模型训练和对比分类识别几部分组成知识点4:声纹识别的评估指标1.性能指标错误接受率(False Acceptance Rate,FAR)错误拒绝率(False Rejection Rate,FRR)知识点4:声纹识别的评估指标2.效果指标效果指标只体现在系统响应时间上,系统响应时间应满足以下要求:声纹注册时间:响应时间≤3000毫秒声纹验证时间:响应时间≤2000毫秒当然,声纹识别的性能指标不只受基本性能指标和系统响应时间的影响,还受采样指标、有效语音长度、语音信息质量判断、抗噪声能力、抗时变能力等的影响。项目实施:声纹识别应用——智能门禁系统任务1 创建应用步骤1注册讯飞账号步骤2:登录讯飞开放平台步骤3:完成个人实名认证步骤3:完成个人实名认证步骤3:完成个人实名认证步骤4:创建声纹识别应用程序任务2智能门禁系统步骤1:导入库函数import jsonimport base64import requestsfrom utils import Gen_req_urlfrom utils import gen_req_bodyfrom record import my_record步骤2:定义用于发送请求的函数与参数(1)首先设置声纹识别中使用的一些基本请求参数APPId = "用户的APPID"APISecret = "用户的APISecret"APIKey = "用户的APIKey"requset_url = 'https://api.xf-yun.com/v1/private/s782b4996'path = "/v1/private/s782b4996"host = "api.xf-yun.com"method = "POST"步骤2:定义用于发送请求的函数与参数(2)定义创建声纹特征库、添加声纹特征、查询声纹特征列表、声纹特征对比这4个步骤通用的用于发送请求的函数req_url()def req_url(api_name, APPId, APIKey, APISecret, file_path=None, featureId=None):gen_req_url = Gen_req_url()body = gen_req_body(apiname=api_name, APPId=APPId, file_path=file_path, featureId=featureId)request_url = gen_req_url.assemble_ws_auth_url(requset_url='https://api.xf-yun.com/v1/private/s782b4996',method="POST",api_key=APIKey,api_secret=APISecret)步骤2:定义用于发送请求的函数与参数(2)定义创建声纹特征库、添加声纹特征、查询声纹特征列表、声纹特征对比这4个步骤通用的用于发送请求的函数req_url()headers = {'content-type': "application/json",'host': 'api.xf-yun.com','appid': '$APPID'}response = requests.post(request_url, data=json.dumps(body), headers=headers)tempResult = json.loads(response.content.decode('utf-8'))return tempResult步骤3:创建声纹特征库创建声纹特征库createGroup = req_url(api_name='createGroup',APPId = APPId,APIKey = APIKey,APISecret = APISecret)createGroup步骤4:添加声纹特征while True:name = input('请输入你的姓名,如果要退出请输入q:')if name == 'q':breakaudio_name = name+'.mp3'my_record(audio_name, 5)createFeature = req_url(api_name='createFeature',APPId = APPId,APIKey = APIKey,APISecret = APISecret,file_path=audio_name,featureId=name)print(createFeature)步骤5:查询声纹特征列表tempResult = req_url(api_name='queryFeatureList',APPId=APPId,APIKey=APIKey,APISecret=APISecret)tempResult解析声纹特征查询结果text_value = tempResult['payload']['queryFeatureListRes']['text']text = base64.b64decode(text_value)text步骤6:声纹特征对比input_audio = 'new.mp3'my_record(input_audio, 5)tempResult = req_url(api_name='searchFea',APPId=APPId,APIKey=APIKey,APISecret=APISecret,file_path=input_audio)tempResult步骤6:声纹特征对比解析声纹识别结果text_value = tempResult['payload']['searchFeaRes']['text']text = base64.b64decode(text_value)Text步骤6:声纹特征对比将字符串转换为字典类型result_dict = json.loads(text.decode('utf-8'))# 获取score的值score = result_dict['scoreList'][0]['score']try:# 判断score是否大于0.7if score > 0.7:print('验证成功,请通过')else:print('验证失败,禁止通行!')except KeyError:print('无法获取score值,请检查是否存在音频!')任务3 智能门禁验证步骤1:填写智能门禁验证结果表验 证 次 数 添加声纹特征人名 声纹特征对比人名 智能门禁结果1 2 3 4 5 步骤2:计算智能门禁系统性能指标试 验 次 数 错误接受率 错误拒绝率1 2 3 4 平均值 展开更多...... 收起↑ 资源预览