首页 » Andorid » 安卓例子 » 正文

声纹云安卓SDK

声纹识别开发平台Android SDK

作为一种核心的语音技术,声纹识别技术在通信技术、语音技术得到飞速发展的今天有着巨大的应用潜力,相关产品已经应用于公共安全、社保身份认证、社区矫正,金融投资服务领域的身份辨认,智能手机移动商务和行业用户满意度调查等不同领域。

声纹识别开发平台由快商通声纹(www.shengwenyun.com)研发,平台提供一个分布式声纹识别解决方案,可根据应用规模适当增减服务器,灵活性非常强大,在以下领域有成功案例:

  • 司法社区矫正
  • 远程教育身份认证
  • 高校教学实验平台

平台特征介绍

  • 文本相关,方便快捷。快商通声纹识别系统基于文本相关声纹识别,用户只需要一句简短口令,即可实时验证身份。
  • 领先算法,精准识别。采用独特的声纹识别处理算法,声纹验证准确率高达99.5%,支持防录音攻击、环境降噪、动态数字口令。
  • 分布式部署,扩展性强。分布式部署声纹识别服务器,支持上百万的声纹容量,易容扩展,而且可以根据应用规模适当调整硬件配置。
  • 简约API,快速集成。提供一组RestFul风格API,支持多终端、多平台集成调用。可针对特定语言定制SDK开发包。

快速上手

请参考以下步骤进行开发

  1. 申请api key和secret(请发邮件至lixm@shengwenyun.com,邮件标题置为“快商通声纹识别开发平台:API调用申请”)
  2. 参照example目录中的例子,编写应用程序
  3. 上线运营。上线之前,请联系管理员(lixm@shengwenyun.com)

开发示例——说话人声纹操作:登记、认证和识别

//1.初始化
private Client client=null;    
private Person person=null;
private Speech speech=null;
private VPRService vservice=null;

//初始化
client = new Client(clientKey,clientSecret);
client.setServer(serverHost,serverPort,serverVersion);

person = new Person(client, group_id, username); 
person.setPassType(keyway); // 随机数字口令

speech = new Speech("pcm/raw", 16000, true);

// 获取服务实例
this.vservice=VPRService.getInstance();

//2.参数设置
// 设置服务参数
this.vservice.setServiceParam(client, person, speech);

// 设置录音回调接口
this.vservice.setRecorderListener(recorderListener);

//设置声纹服务回调接口
this.vservice.setVPRListener(vprListener);

// 设置声纹服务模式,serviceMode可为VPRService.REGISTER、VPRService.VERIFY和VPRService.IDENTIFY
// 调用该方法会初始化声纹口令和声纹服务模式
this.vservice.initService(serviceMode);

//3.接口函数实现
// 声纹服务接口函数实现
private VPRListener vprListener =new VPRListener(){

    @Override
    //初始化声纹服务
    public void onServiceInit(boolean flag,int stepNum,int statusNum, String keyString) {
        //当flag为true,此处提示用户初始朗读的口令keyString和服务所需步数statusNum
        //(在VPRService.REGISTER服务模式下,可提示当前进度步数stepNum)
        //当flag为false,可在onServiceError打印错误信息
    }

    @Override
    //录音上传结果
    public void onSpeechResult(boolean flag) {
        //当flag为false,可提示用户口令朗读错误
    }

    @Override
    //服务结果回调
    public void onServiceEnd(boolean flag, Person person, double similarity) {
        //当flag为false,可提示用户验证失败
        //当flag为true,可提示用户进行下一步操作,如跳转
        //(在VPRService.IDENTIFY服务模式下,可提示识别结果person)
        //similarity可以帮助开发者获取声纹相似度

    }


    @Override
    //在onSpeechResult和onServiceEnd后被调用,表示当前进度情况
    public void onFlowStepChanged(int stepNum, int statusNum, String keyString) {
        //此处可提示用户当前进度步数stepNum,服务总步数statusNum,
        //并刷新当前口令keyString

    }

    @Override
    //服务出错
    public void onServiceError(VPRError error) {
        //此处可打印声纹服务的一些错误,例如口令,网络连接等。
        Log.d("ServiceError",error.getErrorStr());
    }

};

// 录音接口函数实现
private RecorderListener recorderListener =new RecorderListener(){

    // 录音开始时调用
    @Override    
    public void onRecordBegin() {
        // 此处显示录音启动图标,提示用户开始录音
    }

    // 返回实时录音音量,soud为音量大小,取值范围为0-2^15(32768)
    @Override    
    public void onSoundChanged(final float sound) {
        // 此处显示实时音量图标,提示用户音量大小变化 
    }

    // 录音结束时调用,并可在此处开启声纹服务
    @Override
    public void onRecordEnd() {
        // 此处提示用户录音结束

        // 可在此处开启声纹服务
        vservice.startService();
    }

    // 录音异常时调用
    @Override
    public void onRecordError(VPRError error) {
        // 此处可打印录音服务异常
        Log.d(“RecordError",error.getErrorStr());
    } 

};

//4.功能使用
//开始录音
vservice.startRecord();

//停止录音,并在它的回调函数onRecordEnd()中启动声纹服务vservice.startService()
vservice.stopRecord();

//5.其他操作
//主要用来在VPRService.REGISTER模式下会重新注册登记声纹信息
vservice.resetService(serviceMode);
//用来设置声纹服务中的person值,也可调用setServiceParam()方法
vservice.setPerson(person);

开发示例——说话人操作

//1.初始化
private Client client=null;    
private VPRService vservice=null;

//初始化
client = new Client(clientKey,clientSecret);
client.setServer(serverHost,serverPort,serverVersion);
// 获取服务实例
this.vservice=VPRService.getInstance();
// 设置服务参数,(进行说话人操作时,必须先设置client参数)
this.vservice.setServiceParam(client, null, null);

//以下为说话人操作,(注意,以下方法会等待说话人操作的线程结束后才返回结果)
//获取群组内所登记和未登记声纹的说话人信息,当结果为空时,返回空集
List=this.vservice.getPersonGroup(limit,groupId);
//查询说话人是否在该群组内存在
boolean exist=this.vservice.personExist(groupId,userName);
//删除说话人信息及其声纹信息
boolean delete=this.vservice.deletePerson(groupId,userName);
//查询说话人信息,当结果为空时,返回null
Person person=this.vservice.getPersonInfo(groupId,userName);
//设置说话人信息
boolean setinfo=this.vservice.setPersonInfo(gropId,userName,tag);

错误代码对照表

错误代码 错误信息 详细描述
1001 Auth fail Key或Secret错误
1002 network error 网络错误
1003 internal error 未知错误
1004 argument error 参数错误
1005 database error 数据库错误
1006 system file lost 系统文件丢失
2001 person already exist 说话人已存在
2002 person not exist 说话人不存在
2003 has no persons 没有任何说话人
2004 person has no speeches 该说话人没有登记语音
3001 voiceprint state error 声纹训练状态错误
3002 voiceprint already registered 说话人声纹已注册
3003 voiceprint has no speeches 该说话人不存在登记语音
3004 verify error 验证异常
3005 voiceprint not trained 没有登记声纹
3006 identify error 声纹辨认发生错误
4001 speech too short 语音太短
4002 speech too long 语音太长
4003 speech sample rate error 语音采样率错误,目前仅支持8k
4004 speech already exist 语音已存在
4005 speech not exist 语音不存在
4006 speech process error 语音处理错误
5001 asr recognize error 语音识别错误
5002 asr not matched 语音内容不匹配

下载

从 release 版本下载

下载地址:https://github.com/sanqianyuejia/JavaSDK/releases

许可证

Copyright (c) 2013 快商通信息技术有限公司

基于 MIT 协议发布:

下载 (2)

发表评论