# 声纹识别 iOS SDK 文档

# 1、简介

声纹识别(Voiceprint Recognition),是一项提取说话人声音特征和说话内容信息,自动核验说话人身份的技术。MSC SDK 声纹识别(IdentityVerfier)的使用包括注册(训练)、验证和模型操作。类似于一个网站的用户登录一样,用户必须先注册,才能登录(验证),在用户忘记密码时,可以提供重设密码的操作(模型操作)。

MSC SDK的主要功能接口如下图所示:

语音评测的使用主要有三个步骤:

# 2、SDK集成指南

# 第一步:获取appid

appid是第三方应用集成讯飞开放平台SDK的身份标识,SDK静态库和appid是绑定的,每款应用必须保持唯一,否则会出现10407错误码。appid在开放平台申请应用时可以获得,下载SDK后可从SDK中sample文件夹的Demo工程里找到(例如: /sample/MSCDemo/MSCDemo/Definition.h 的APPID_VALUE)。

# 第二步:工程配置

# 添加库

将开发工具包中lib目录下的iflyMSC.framework添加到工程中。同时请将Demo中依赖的其他库也添加到工程中。 按下图示例添加 SDK 所需要的 iOS系统库:

库名称 添加范围 功能 iflyMSC.framework 必要 讯飞开放平台静态库。

libz.tbd 必要 用于压缩、加密算法。

AVFoundation.framework 必要 用于系统录音和播放 。

SystemConfiguration.framework 系统库 用于系统设置。

Foundation.framework 必要 基本库。

CoreTelephony.framework 必要 用于电话相关操作。

AudioToolbox.framework 必要 用于系统录音和播放。

UIKit.framework 必要 用于界面显示。

CoreLocation.framework 必要 用于定位。

Contacts.framework 必要 用于联系人。

AddressBook.framework 必要 用于联系人。

QuartzCore.framework 必要 用于界面显示。

CoreGraphics.framework 必要 用于界面显示。

libc++.tbd 必要 用于支持C++。

注意: 添加iflyMSC.framework时,请检查工程BuildSetting中的framwork path的设置,如果出现找不到framework的情况,可以将path清空,在Xcode中删除framework,然后重新添加。

iflyMSC.framework最低支持iOS 8.0。

# 设置Bitcode

在Xcode 7,8默认开启了Bitcode,而Bitcode 需要工程依赖的所有类库同时支持。MSC SDK暂时还不支持Bitcode,可以先临时关闭。后续MSC SDK支持Bitcode 时,会在讯飞开放平台上进行SDK版本更新,请关注。关闭此设置,只需在Targets - Build Settings 中搜索Bitcode 即可,找到相应选项,设置为NO。

# 用户隐私权限配置

iOS 10发布以来,苹果为了用户信息安全,加入隐私权限设置机制,让用户来选择是否允许。

隐私权限配置可在info.plist 新增相关privacy字段,MSC SDK中需要用到的权限主要包括麦克风权限、联系人权限和地理位置权限:

NSMicrophoneUsageDescription

NSLocationUsageDescription

NSLocationAlwaysUsageDescription

NSContactsUsageDescription

即在Info.plist 中增加下图设置:

# 第三步:初始化

初始化示例:

//Appid是应用的身份信息,具有唯一性,初始化时必须要传入Appid。

NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@", @"YourAppid"];

[IFlySpeechUtility createUtility:initString];参数 说明 必填 appid 8位16进制数字字符串,应用的唯一标识,与下载的SDK一一对应。 是

usr 保留字段,无需关注。 否

pwd 保留字段,无需关注。 否

注意:

初始化是一个异步过程,可放在App启动时执行初始化,具体代码可以参照Demo的MSCAppDelegate.m。

# 第四步:启动服务

所有的服务皆遵循如下的流程,如下图:

所有服务的API详细说明可参见:https://www.xfyun.cn/doc/mscapi/iOS/iosverifier.html

# 3、声纹识别

# 声纹注册

//设置声纹工作参数

//设置密码类型,pwdt的取值为1、3,分别表示文本密码和数字密码

[self.identityVerifier setParameter:[NSString stringWithFormat:@"%d",pwdt] forKey:@"pwdt"];

pwdt的取值说明如下表所示: 值 说明 1 文本密码。用户通过读出指定的文本内容来进行声纹注册和验证,现阶段支持的文本只有“芝麻开门”一种。

3 数字密码。从云端拉取一组特定的数字串(共分5组,每组8位数字),用户依次读出这5组数字进行注册,在验证过程中会生成一串特定的数字,用户通过朗读这串数字进行验证。

密码内容需调用接口从云端获取:

//通过调用getPasswordList方法来获取密码。

//获取密码的时候需指定声纹密码类型,pwdt为1表示固定文本密码,pwdt为3表示数字密码。 //getPasswordList可以参照demo所示。NSString *paramTemp = [NSString stringWithFormat:@"sub=ivp,rse=utf-8,pwdt=%d,",pwdt];

获取到密码后,接下来进行声纹注册。

// 设置业务类型为训练

[self.identityVerifier setParameter:@"enroll" forKey:@"MFV_SST"];

// 设置密码类型

[self.identityVerifier setParameter:[NSString stringWithFormat:@"%d",pwdt] forKey:@"pwdt"];

// 对于文本密码和数字密码,必须设置密码的文本内容.

// ptxt的取值为“我的地盘我做主”、“移动改变生活”、“芝麻开门”或者是从云端拉取的数字密码(每8位用“-”隔开)。

[self.identityVerifier setParameter:ptxt forKey:@"ptxt"];

// 设置声纹对应的auth_id,它用于标识声纹对应的用户

[self.identityVerifier setParameter:auth_id forKey:@"auth_id"];

// 设置有效录音时间

[self.identityVerifier setParameter:@"3000" forKey:@"vad_timeout"];

// 末端静音检测时间,用于检测到静音自动停止录音

[self.identityVerifier setParameter:@"700" forKey:@"vad_speech_tail"];

// 启动训练服务

// 开始注册,当得到注册结果时,SDK会将其封装成NSDictionary对象,回调onResult方法进行处理,处理方法详见Demo示例

[self.identityVerifier startListening];

// 声纹协议IFlyISVDelegate实现

//会话结果返回回调

-(void) onResult:(NSDictionary *)dic;

//会话结束回调

-(void) onCompleted:(IFlySpeechError *) errorCode;

//结果处理中回调

-(void) onRecognition;

//录音音量改变回调

-(void) onVolumeChanged: (int)volume;

推荐在注册声纹模型时每个用户都指定一个唯一的auth_id。auth_id的格式为:6-18个字符,为字母、数字和下划线的组合且必须以字母开头,不支持中文字符,不能包含空格。

开发者通过重写onResult方法来处理注册和验证结果。在结果result中携带错误码,用来判别注册是否成功以及出错原因,部分错误码的含义如下表所示: 错误码 说明 10106 缺少某个必要参数

10107 某个必要参数存在但无效

10110 引擎授权不足或者说授权客户端用户数达到上限

10114 操作超时

10116 数据库中模型不存在

10212 数据库中模型已经存在

10400 数据库中一般性错误,此时此ssb已经登录超过3次且均失败

10407 APPID非法

10606 音频太短

# 声纹验证

声纹验证过程与声纹注册类似,不同之处仅在于“sst”参数需要设置为“verify”,其他参数的设置、验证结果的处理过程可参考上一节。

另外,为了达到较好的效果,请在声纹注册与验证过程中尽量与麦克风保持同样的距离(建议的最佳距离是15厘米左右)。若距离较远,可能会对验证通过率产生较大影响。

# 声纹模型操作

声纹注册成功后,在云端会生成一个对应的模型来存储声纹信息,声纹模型的操作即对模型进行查询和删除。

//开发者调用sendRequest方法查询或者删除模型,该函数的定义如下:

//cmd: @”query”表示查询,@”del”表示删除

//auth_id表示用户名;

//pwdt表示声纹类型;

//ptxt表示查询或者删除的密码文本;

//vid是用户注册成功后服务器返回的32位标识,查询和删除时,vid可以设置为nil;

//err是查询的错误码。 通常查询或者删除成功,该函数会返回YES,否则返回NO;

-(BOOL) sendRequest:(NSString*)cmd authid:(NSString *)auth_id pwdt:(int)pwdt ptxt:(NSString *)ptxt vid:(NSString *)vid err:(int *)err;

# 声纹业务返回结果格式和参数说明

# 声纹识别结果说明

文本密码JSON示例:

{

"txt_pwd": [

"我的地盘我做主",

"移动改变生活",

"芝麻开门"

]

}

数字密码JSON示例:

{

"num_pwd": [

"03285469",

"09734658",

"53894276",

"57392804",

"68294073"

]

}

声纹业务结果(VerifierResult)成员说明: 成员 说明 sst 业务类型,取值为train或verify

ret 返回值,0为成功,-1为失败

vid 注册成功的声纹模型id

score 当前声纹相似度

suc 本次注册已成功的训练次数

rgn 本次注册需要的训练次数

trs 注册完成描述信息

err 注册/验证返回的错误码

dcs 描述信息

# 声纹注册字段 JSON字段 类型 说明 ssub String 业务类型,声纹业务为ivp

sst String 子业务类型,注册业务为enroll

ret int 返回值,0为请求成功,其他为请求失败

rgn int 本次注册需要的训练次数

suc int 本次注册已成功的训练次数

vid string 声纹模型id(当前无需关注)

声纹注册结果示例:

{

"vid":"418bf8071f6a56be862f9b1681395a7f",

"suc": 5,

"rgn": 5,

"sst": "enroll",

"ssub": "ivp",

"ret": 0

}

# 查询/删除模型字段 JSON字段 类型 说明 ssub String 业务类型,取值:

ivp:声纹业务;

ifr:人脸业务(暂无查询业务);

ret int 返回值,0为请求成功,其他为请求失败

sst String 子业务类型,取值:

query:查询模型;

delete:删除模型;

查询结果示例 :

{

"ssub": "ivp",

"sst": "query",

"ret": 0

}

删除结果示例:

{

"ssub": "ivp",

"sst": "delete",

"ret": 0

}

# 常见问题

# 声纹识别的主要功能是什么? 答:声纹识别,是一项提取说话人声音特征和说话内容信息,自动核验说话人身份的技术。

# 声纹识别支持什么应用平台? 答:目前声纹识别支持Android/IOS应用平台。

# 声纹识别支持什么语言? 答:目前声纹识别支持的语言是:中文数字。

# 声纹识别是否支持离线? 答:目前还没有离线声纹识别功能。

# iOS声纹sdk如何下载试用? 答:文档中心---快速指引(opens new window)有介绍步骤根据步骤下载声纹sdk

# 声纹识别如何试用免费次数?免费次数是多少? 答:登录讯飞开放平台---控制台---我的应用(没有应用先创建一个应用)---其他---声纹识别---服务管理(可免费调用SDK接口500次服务量/日)

声纹识别demo_声纹识别 iOS SDK 文档相关推荐

  1. 汉风联运iOS SDK文档说明

    汉风联运/聚合SDK(iOS) iOS SDK概述 iOS SDK 集成指南 1.接入配置 2.接入方法 3.打包注意事项 iOS SDK概述 协议说明 协议采用HTTP协议,请求报文通过post方式 ...

  2. 小区人脸识别门禁系统云平台需求分析文档

    小区人脸识别门禁系统云平台需求分析文档 系统功能(平台管理端后台,物业管理端后台) 1.小区人脸识别门禁系统云平台,支持全国各地不同的物业公司在线注册账号,不同物业公司管理旗下多个小区的云平台管理系统 ...

  3. Python+Tesseract-OCR识别图片文字并保存到word文档

    目录 使用Python+Tesseract-OCR识别图片文字并保存到word文档 安装Tesseract-OCR 配置Tesseract-OCR 通过CMD验证Tesseract-OCR工作 安装p ...

  4. 声纹识别demo_声纹识别 · 科大讯飞MSC开发指南-iOS · 看云

    [TOC] 声纹识别,主要是提供基于用户声纹特征的注册.验证服务.讯飞开放平台支持2种类型的声纹密码类型,即文本密码和数字密码,在注册时需要指定声纹类型. ~~~ //创建声纹对象 isvRec=[I ...

  5. 声纹识别demo_声纹识别 · JD NeuHub API Documents

    声纹识别 一.接口描述 1. 功能描述 声纹识别基于说话人的声音提供说话人确认功能. 2. 能力说明 声纹识别API提供说话人注册以及说话人确认的功能.用户可以先用声音进行注册,再根据声音进行说话人确 ...

  6. 文档扫描识别——基于M-LSD线段检测的拍照文档校正

    前言 1.拍照文档扫描识别是办公类App里面最常用到的的一类应用,市面上有很多相关的App,及主要技术点有几个要用到图像处理,有边缘检测校正,文档滤镜,和OCR. 2.关于边缘文档连续检测,有用传统算 ...

  7. ICDAR 2021竞赛 科学文献分析——表格识别综述部分(剩余部分是文档布局分析)

    任务B为表格识别部分,本文暂只看表格识别 摘要(不重要,想直接看表格识别部分可以跳过). 科学文献包含与不同领域的前沿创新有关的重要信息.自然语言处理的进步推动了科学文献信息自动提取的快速发展.然而, ...

  8. iOS - appledoc 文档生成

    为什么80%的码农都做不了架构师?>>>    1.安装appledoc git clone git://github.com/tomaz/appledoc.git cd ./app ...

  9. [iOS开发]文档导读

    转自:http://ourcoders.com/thread/show/117/ 应该很多人看过了,发出来给没有看过的.. 有些文档都是很早的了,但还是涵盖了许多基础知识,值得一看 有些可以直接去苹果 ...

最新文章

  1. poj2154-color-polyan次二面体+欧拉函数优化
  2. 局域网通讯工具_自动称重带无线通讯WIFI传输功能设备
  3. linux桌面lxde 安装_Ubuntu 18.04下安装Lxde轻量桌面系统和VNC服务器
  4. android电池(五):电池 充电IC(PM2301)驱动分析篇【转】
  5. c#winform使用WebBrowser 大全
  6. C++11 std::shared_ptr的std::move()移动语义底层分析
  7. 1.5 编程基础之循环控制 09 奇数求和
  8. 线上python课程一般多少钱-Python在线培训课程费用是多少?值不值得报名?
  9. OpenERP __sql_constrants doesn't work.
  10. 理想的工作永远不存在
  11. [转载] 财经郎眼20120526:山东首富挑战国家电网
  12. 从k-\epsilon到k-\omega
  13. php红包互助源码_完整的微信红包接口API实现(php版)
  14. 前后端RSA加密梳理
  15. Labview的子VI
  16. 黑马-linux编程
  17. 微信支付 APP端 后端 第四-五弹 退款定时任务 账单下载
  18. python---用单个葫芦丝音节合成完整的曲目
  19. Verilog轮询仲裁器设计——Round Robin Arbiter
  20. 水溶性CdS/ZnS量子点(硫化镉/硫化锌量子点)基团:PEG-NH2、PEG-COOH、MPA-COOH、GSH

热门文章

  1. Android11编译导入PRODUCT_BOOT_JARS
  2. Cannot find module lint-staged 解决办法
  3. 自媒体-短视频搬运的那点事
  4. Android中m、mm、mmm、mma、mmma的区别
  5. 自适应动态规划matlab,自适应动态规划ADP
  6. 给IOS初学者及新手的建议
  7. Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(一)
  8. 微信小程序rich-text富文本图片
  9. 2022年全球及中国工业五金垫圈行业研究
  10. PHPMYWIND 教程之 碎片数据的使用GetFragment()