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

本文介绍了科大讯飞的声纹识别服务,包括如何使用API进行声纹注册和验证。声纹识别支持文本密码和数字密码类型,通过设置参数并调用相关方法完成声纹模型的训练。开发者需要关注参数如`pwdt`、`auth_id`等,并处理注册和验证的结果,以确保操作成功。声纹验证时,建议保持固定的麦克风距离以提高验证准确率。
摘要由CSDN通过智能技术生成

[TOC]

声纹识别,主要是提供基于用户声纹特征的注册、验证服务。讯飞开放平台支持2种类型的声纹密码类型,即文本密码和数字密码,在注册时需要指定声纹类型。

~~~

//创建声纹对象

isvRec=[IFlyISVRecognizer sharedInstance];

isvRec.delegate=self;

//设置声纹工作参数

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

[isvRec setParameter:[NSString stringWithFormat:@"%d",pwdt] forKey:@"pwdt"];

~~~

pwdt的取值说明如下表所示:

|值 |说明 |

| :---: | --- |

| 1 | 文本密码。用户通过读出指定的文本内容来进行声纹注册和验证,现阶段支持的文本只有“芝麻开门”一种。 |

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

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

~~~

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

//获取密码的时候需指定声纹密码类型,pwdt为1表示固定文本密码,pwdt为3表示数字密码。

//getPasswordList可以参照demo所示。

NSArray *tmpArray=[isvRec getPasswordList:ivppwdt];

~~~

获取到密码后,接下来进行声纹注册,即要求用户朗读若干次指定的内容,这一过程也称为声纹模型的训练。

~~~

// 设置业务类型为训练

[isvRec setParameter:@"train" forKey:@"sst"];

// 设置密码类型

[isvRec setParameter:[NSString stringWithFormat:@"%d",pwdt] forKey:@"pwdt"];

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

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

[isvRec setParameter:ptxt forKey:@"ptxt"];

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

[isvRec setParameter:auth_id forKey:@"auth_id"];

// 设置有效录音时间

[isvRec setParameter:@"3000" forKey:@"vad_timeout"];

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

[isvRec setParameter:@"700" forKey:@"vad_speech_tail"];

// 启动训练服务

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

[isvRec startListening];

// 声纹协议IFlyISVDelegate实现

//会话结果返回回调

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

//会话结束回调

-(void) onError:(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;

~~~

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

请参见 [附录](附录.md) 声纹业务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值