1.1.4 • Published 4 years ago
smart-discern v1.1.4
全局配置
安装
$ yarn add smart-discern
如何使用
前置配置/全局配置
/**
* 全局初始化配置
*/
import SmartDiscern from 'smart-discern';
/**
* 根据回传的 url 由业务服务器生成语音识别转文字所需的 token 值
* 生成算法
* @param url
*/
async function signCallback(url) {
/**
* 这里写你通过服务端获取 token 值的方法并 return 返回
*/
return token
}
/**
* 由业务服务器生成身份证识别所需的 token
*/
SmartDiscern.init(token, signCallback);
语音转文字 token 生成逻辑
说明:参数为待签名的url(url中已经包含了时间戳),将url签名成token 参考将https://developer.qiniu.com/kodo/1202/download-token
身份证识别 token 生成逻辑
// app_id 加上过期时间
const src = "<app_id>:<expiration>"
const encodedSrc = urlsafe_base64_encode(src)
// 计算HMAC-SHA1签名,并对签名结果做URL安全的Base64编码
const sign = hmac_sha1(encodedSrc, "Your_Secret_Key")
const encodedSign = urlsafe_base64_encode(sign)
// 拼接上述结果得到 token
const token = "QD " + Your_Access_Key + ":" + encodedSign + ":" + encodedSrc``
类AudioToTextAnalyzer(语音识别转文字)
API
方法 | 类型 | 说明 |
---|---|---|
static startAudioToText(静态方法) | (audioTrack: Track, params: AudioToTextParams, callback: Callback) => QNAudioToTextAnalyzer | 开始语音实时识别 |
getStatus | () => Status | 获取当前状态 |
stopAudioToText | () => void | 停止语音实时识别 |
类型定义
Track
Track 对象是 Track 模式下的媒体对象,可以用来在页面上播放媒体。
AudioToTextParams(开启语音识别所需的参数)
interface AudioToTextParams {
force_final: number; // 是否在text为空的时候返回final信息, 1->强制返回;0->不强制返回。
maxsil: number; // 最长静音间隔,单位秒,默认10s
model_type: number; // 0->cn; 默认0
need_partial: number; // 是否返回partial文本,1->返回,0-> 不返回;默认1
need_words: number; // 是否返回词语的对齐信息,1->返回, 0->不返回;默认0。
needvad: number; // 是否需要vad;0->关闭;1->开启; 默认1
vad_sil_thres: number; // vad断句的累积时间,大于等于0, 如果设置为0,或者没设置,系统默认
}
Callback(语音识别的回调)
/**
* 连接状态变化
* 参数:status-当前状态; msg-提示消息
*/
type StatusChangeCallback = (status: Status, msg: string) => void
/**
* 实时转化文字数据
* 参数:audioToText - 当前片段的结果文字数据
*/
type AudioToTextCallback = (audioToText: AudioToText) => void;
interface Callback {
onStatusChange: StatusChangeCallback;
onAudioToText: AudioToTextCallback;
}
Status(当前的状态)
enum Status {
AVAILABLE, // 未开始可用
DESTROY, // 已经销毁不可用
ERROR, // 连接异常断线
DETECTING // 正在实时转化
}
AudioToText(语音识别的内容)
interface AudioToText {
end_seq: number; // 为该文本所在的切片的终点(包含),否则为-1
end_time: number; // 该片段的终止时间,毫秒
ended: number; // 是否是websocket最后一条数据,0:非最后一条数据,1: 最后一条数据。
finalX: number; // 分片结束,当前消息的transcript为该片段最终结果,否则为partial结果
long_sil: number; // 是否长时间静音,0:否;1:是
partial_transcript: string; // partial结果文本, 开启needpartial后返回
seg_begin: number; // 是否分段开始: 1:是; 0:不是。
seg_index: number; // 是否是vad分段开始说话的开始1:是分段开始说话; 0:不是。
spk_begin: number; // 是否是vad分段开始说话的开始1:是分段开始说话; 0:不是。
start_seq: number; // 该文本所在的切片的起点(包含), 否则为-1
start_time: number; // 该片段的起始时间,毫秒
transcript: string; // 语音的文本, 如果final=0, 则为partinal结果 (后面可能会更改),final=1为该片段最终结果
uuid: string;
words: WordsDTO; // 返回词语的对齐信息, 参数need_words=1时返回详细内存见下表。
}
interface WordsDTO {
seg_end: number; // 该词语相对整个数据流的起始时间, 毫秒
seg_start: number; // 该词语相对当前分段的起始时间, 毫秒
voice_end: number; // 该词语相对整个数据流的终止时间, 毫秒
voice_start: number; // 该词语相对当前分段的终止时间, 毫秒
word: string; // 词语本身,包括标点符号
}
类IDCardDetector(身份证信息识别)
使用
import { IDCardDetector } from 'smart-discern';
IDCardDetector.run(track)
.then(res => console.log(res))
API说明
方法 | 类型 | 说明 |
---|---|---|
static run(静态方法) | (videoTrack: Track, params?: IDCardDetectorRunParams) => Promise<IDCardDetectorRunRes> | 身份证信息识别,返回的是一个promise,得到识别出来的信息 |
类型定义
IDCardDetectorRunParams(身份证识别参数)
interface IDCardDetectorRunParams {
task_id?: string,
image: {
session_id?: string, // 唯一会话 id
ret_image?: boolean, // 是否返回识别后的切图(切图是指精确剪裁对齐后的身份证正反面图片),返回格式为 JPEG 格式二进制图片使用 base64 编码后的字符串
ret_portrait?: boolean, // 是否返回身份证(人像面)的人脸图 片,返回格式为 JPEG 格式二进制图片使用 base64 编码后的字符串
ref_side?: string, // 当图片中同时存在身份证正反面时,通过该参数指定识别的版面:取值'Any' - 识别人像面或国徽面,'F' - 仅 识别人像面,'B' - 仅识别国徽面
enable_border_check?: string, // 身份证遮挡检测开关,如果输入图片中的身份证卡片边框不完整则返回告警
enable_detect_copy?: string, // 复印件、翻拍件检测开关,如果输入图片中的身份证卡片是复印件,则返回告警
}
}
IDCardDetectorRunRes(身份证识别响应值)
interface IDCardDetectorRunRes {
request_id?: string,
response: {
session_id: string, //唯一会话 id
errorcode: number, // 返回状态码
errormsg: string, // 返回错误消息
warnmsg: Array<string>, // 多重警告码
ocr_result: OcrResult, // 文字识别结果
image_result: ImageResult, // 图片检测结果
}
}
interface OcrResult {
side: string // F-身份证人像面,B-身份 证国徽面
idno: string, // 身份号码(人像面)
name: string, // 姓名(人像面)
nation: string, // 民族(人像面)
gender: string, // 性别(人像面)
address: string, // 地址(人像面)
birthdate: string, // 生日(人像面) eg. "19900111"
validthru: string, // 有效期(国徽面) eg. "20001010-20101009"
issuedby: string, // 签发机关(国徽面)
}
interface ImageResult {
idcard: string, // 身份证区域图片,使用Base64 编码后的字符串, 是否返回由请求参数ret_image 决定
portrait: string, // 身份证人像照片,使用Base64 编码后的字符串, 是否返回由请求参数ret_portrait 决定
idcard_bbox: Array<Array<number>>, // 框坐标,格式为 [[x0, y0], [x1, y1], [x2, y2], [x3, y3]]
}