Skip to content

Latest commit

 

History

History
275 lines (217 loc) · 7.87 KB

README.md

File metadata and controls

275 lines (217 loc) · 7.87 KB

声纹识别开发平台Java SDK

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

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

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

平台特征介绍

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

快速上手

请参考以下步骤进行开发

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

开发示例——注册说话人声纹

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import utils.Constants;
import client.Client;
import model.Person;
import model.Speech;

public class Test {

/**
 * @param args
 * @throws IOException 
 * @throws ParseException 
 */
public static void main(String[] args) {
    int ret = -1;       
    
    // Create server
    Client client = new Client("1ee0d9b01e8d92a155597785e0b7074e", "1ee0d9b01e8d92a155597785e0b7074e");
    client.setServer("openapi.shengwenyun.com", 80, "1", Constants.TEXT_DEPENDENT);
    
    // Create person
    Person person = new Person(client, "123456789", "test");
    if ( (ret = person.create()) != Constants.RETURN_SUCCESS) {
        System.err.println(person.getLastErr()+":"+String.valueOf(ret));
        return;
    }
    
    // Create Speech
    Speech speech = new Speech("pcm/raw", 8000, true);      
    speech.setRule("123456789");
    
    // Add Speech to person
    for (String filepath : args) {
        speech.setData(readWavform(filepath));      // readWavform是读文件到byte缓冲的函数
        if ((ret = person.addSpeech(speech)) != Constants.RETURN_SUCCESS) {
            System.err.println(person.getLastErr()+":"+String.valueOf(ret));
            return;
        }
    }
    
    // Register voiceprint for speaker
    if ((ret = client.registerVoiceprint(person)) != Constants.RETURN_SUCCESS) {
        System.err.println(person.getLastErr()+":"+String.valueOf(ret));
        return;
    }
    
    // Output result
    System.out.println(person.getId()+": Register voiceprint success.");
}

public static byte[] readWavform(String filename) {

    int regLen = 0; 
    byte[] regbuffer = null;
    try {
        FileInputStream inputsteam = new FileInputStream(new File(filename));           
        inputsteam.skip(100);
        
        regLen = inputsteam.available() - 100;
        regbuffer = new byte[regLen];
        if ((regLen = inputsteam.read(regbuffer, 0, regLen))<0) {
            System.out.println("error when read pcm file.");
        }
        
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    return regbuffer;
}

}

错误代码对照表

错误代码 错误信息 详细描述
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 协议发布: