作为一种核心的语音技术,声纹识别技术在通信技术、语音技术得到飞速发展的今天有着巨大的应用潜力,相关产品已经应用于公共安全、社保身份认证、社区矫正,金融投资服务领域的身份辨认,智能手机移动商务和行业用户满意度调查等不同领域。
声纹识别开发平台由快商通声纹(www.shengwenyun.com)研发,平台提供一个分布式声纹识别解决方案,可根据应用规模适当增减服务器,灵活性非常强大,在以下领域有成功案例:
- 司法社区矫正
- 远程教育身份认证
- 高校教学实验平台
- 文本相关,方便快捷。快商通声纹识别系统基于文本相关声纹识别,用户只需要一句简短口令,即可实时验证身份。
- 领先算法,精准识别。采用独特的声纹识别处理算法,声纹验证准确率高达99.5%,支持防录音攻击、环境降噪、动态数字口令。
- 分布式部署,扩展性强。分布式部署声纹识别服务器,支持上百万的声纹容量,易容扩展,而且可以根据应用规模适当调整硬件配置。
- 简约API,快速集成。提供一组RestFul风格API,支持多终端、多平台集成调用。可针对特定语言定制SDK开发包。
请参考以下步骤进行开发
- 申请api key和secret(请发邮件至[email protected],邮件标题置为“快商通声纹识别开发平台:API调用申请”)
- 参照example目录中的例子,编写应用程序
- 上线运营。上线之前,请联系管理员([email protected])
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 | 语音内容不匹配 |
下载地址:https://github.com/sanqianyuejia/JavaSDK/releases
Copyright (c) 2013 快商通信息技术有限公司
基于 MIT 协议发布: