语音交互服务 SIS-一句话识别Websocket接口:示例代码
时间:2023-11-20 11:21:53
示例代码
如下示例仅供参考,最新代码请前往获取SDK章节获取并运行。
import com.huawei.sis.bean.AuthInfo; import com.huawei.sis.bean.RasrListener; import com.huawei.sis.bean.SisConfig; import com.huawei.sis.bean.SisConstant; import com.huawei.sis.bean.request.SasrWebsocketRequest; import com.huawei.sis.bean.response.RasrResponse; import com.huawei.sis.bean.response.StateResponse; import com.huawei.sis.client.SasrWebsocketClient; import com.huawei.sis.util.JsonUtils; /** * 一句话识别 websocket demo * * Copyright 2021 Huawei Technologies Co.,Ltd. */ public class SasrWebsocketDemo { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 private String ak = System.getenv("HUAWEICLOUD_SDK_AK"); private String sk = System.getenv("HUAWEICLOUD_SDK_SK"); private String region = "cn-north-4"; // 区域,如cn-north-1、cn-north-4 private String projectId = ""; // 项目id,在我的凭证查看。参考https://support.huaweicloud.com/api-sis/sis_03_0008.html private String path = ""; // 本地音频路径,如D:/test.wav, sdk也支持byte数组传送 private String audioFormat = "pcm16k16bit"; // 音频格式,如pcm16k16bit,详见api文档或sdk文档 private String property = "chinese_16k_common"; // 属性字符串,language_sampleRate_domain,如chinese_16k_common, 详见api文档 /** * 一句话识别websocket版本参数设置,所有参数设置均为可选,均有默认值。用户根据需求设置参数。 * * @param request request请求,包含各种参数 */ private void setParameters(SasrWebsocketRequest request) { // 1. 设置是否添加标点符号,yes 或 no, 默认"no" request.setAddPunc("yes"); // 2. 设置是否显示中间结果,yes或no,默认“no” request.setIntermediateResult("no"); // 3. 设置热词表id, 若没有则设置,否则会报错。 // request.setVocabularyId(""); // 4. 设置是否将音频中数字转写为阿拉伯数字,yes or no,默认yes request.setDigitNorm("no"); // 5. 设置是否需要word_info,yes or no, 默认no request.setNeedWordInfo("no"); } /** * 定义config,所有参数可选,设置超时时间等。 * * @return SisConfig */ private SisConfig getConfig() { SisConfig config = new SisConfig(); // 设置连接超时,默认10000ms config.setConnectionTimeout(SisConstant.DEFAULT_CONNECTION_TIMEOUT); // 设置读取超时,默认10000ms config.setReadTimeout(SisConstant.DEFAULT_READ_TIMEOUT); // 设置代理, 一定要确保代理可用才启动此设置。 代理初始化也可用不加密的代理,new ProxyHostInfo(host, port); // ProxyHostInfo proxy = new ProxyHostInfo(host, port, username, password); // config.setProxy(proxy); return config; } /** * 获取监听器,监听器的监听函数。 * * @return RasrListener,用于监听websocket */ private RasrListener getRasrListener() { RasrListener rasrListener = new RasrListener() { @Override /** * 连接成功回调 */ public void onTranscriptionConnect() { System.out.println("sasr websocket connected"); } @Override /** * 断开连接回调 */ public void onTranscriptionClose() { System.out.println("sasr websocket closed"); } @Override /** * 响应结果回调 */ public void onTranscriptionResponse(RasrResponse response) { printResponse(response); } @Override /** * 识别开始回调 */ public void onTranscriptionBegin(StateResponse response) { printResponse(response); } @Override /** * 识别结束回调 */ public void onSTranscriptionEnd(StateResponse response) { printResponse(response); } @Override /** * 识别出错回调 */ public void onTranscriptionFail(StateResponse response) { printResponse(response); } @Override public void onEvent(String event) { log.info("receive event {}", event); } }; return rasrListener; } private void printResponse(Object response) { try { System.out.println(JsonUtils.obj2Str(response, true)); } catch (Exception e) { e.printStackTrace(); } } /** * 实时语音识别SDK的工作流程 */ private void process() { // 1. 实现监听器接口listener,用户自定义收到响应的处理逻辑。 RasrListener listener = getRasrListener(); // 2. 初始化SasrWebsocketClient AuthInfo authInfo = new AuthInfo(ak, sk, region, projectId); SasrWebsocketClient sasrWebsocketClient = new SasrWebsocketClient(authInfo, listener, getConfig()); try { // 3. 配置参数 // audioFormat为支持格式、property为属性字符串,具体填写请详细参考api文档 SasrWebsocketRequest request = new SasrWebsocketRequest(audioFormat, property); setParameters(request); // 4 连接websocket sasrWebsocketClient.sasrConnect(request); // 5. 发送开始请求、发送音频、发送end请求 // 发送开始请求,即将开始请求连带配置发送至服务端 sasrWebsocketClient.sendStart(); // 也可以自己控制发送速率.byteLen为每次发送大小,sleepTime为每次发送后睡眠时间(ms),一些非持续获取音频场景不需要睡眠,可设置为0. sasrWebsocketClient.sendAudio(path); // sasrWebsocketClient.sendAudio(path, byteLen, sleepTime); // 可直接发送byte流,即byte数组 // byte[] data = IOUtils.getFileData(path); // sasrWebsocketClient.sendByte(data); // sasrWebsocketClient.sendByte(data, byteLen, sleepTime); // 发送结尾请求 sasrWebsocketClient.sendEnd(); } catch (Exception e) { e.printStackTrace(); } finally { // 6. 关闭客户端。发送完毕后,此步一定要实施,否则服务端因为20s没有接受任何消息而报异常。 sasrWebsocketClient.close(); } } public static void main(String[] args) { SasrWebsocketDemo sasrWebsocketDemo = new SasrWebsocketDemo(); sasrWebsocketDemo.process(); } }
support.huaweicloud.com/sdkreference-sis/sis_05_0071.html
看了此文的人还看了
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格
推荐文章