当前位置: 首页 > news >正文

成年做羞羞的视频网站自己做网站打开很卡

成年做羞羞的视频网站,自己做网站打开很卡,希尔顿酒店网站建设的优点,qq自动发货平台网站怎么做阿里提供的demo代码都是javascript,自己捏个轮子。参考着自己写了一个阿里巴巴一句话听写Nls的typescript模块。VUE3的组合式API形式 startClient:开始听写,注意下一步要尽快开启识别和传数据,否则6秒后会关闭 startRecognition…

阿里提供的demo代码都是javascript,自己捏个轮子。参考着自己写了一个阿里巴巴一句话听写Nls的typescript模块。VUE3的组合式API形式

startClient:开始听写,注意下一步要尽快开启识别和传数据,否则6秒后会关闭

startRecognition:开始识别事务,传入识别回调,可以打印字符或显示到屏幕

sendSound:发送二进制PCM数据(格式16MHz16bit)

stopRecognition:结束识别事务

/*** 阿里语音,一句话识别模块for ccframe** 无心跳设计,非长连接推送,因此在需要使用的时候才进行连接** @Jim 2024/07/08*/
import * as utils from '@/utils/index'
import { nextTick } from 'vue'
// import Global from '@/utils/constants'const NLS_SERVER_URL = 'wss://nls-gateway.aliyuncs.com/ws/v1'
const NLS_MODE = 'SpeechRecognizer' // 一句话识别
const WEBSOCKET_MAX_RETRY = 3
const RECONNECT_INTERVAL = 3000interface INlsConfig {url?: stringappkey: string // 应用的keytoken: string // 从服务器获得,要缓存
}let client: (UniNamespace.SocketTask & { readyState?: WsState }) | undefined
const clientId = utils.uuid(utils.UUIDFormat.StandardCompact)
let taskId: string = ''
let config: INlsConfig
let reconnectAttempts = 0
let taskStarted = falseenum WsState {CONNECTING,OPEN,CLOSING,CLOSED
}/**** @param action* @returns 请求json*/
const buildMsg: (action: string, payload: Record<string, any>) => string = (action,payload = {}
) => {if (taskId.length === 0) {taskId = utils.uuid(utils.UUIDFormat.StandardCompact)}const msg = {header: {message_id: utils.uuid(utils.UUIDFormat.StandardCompact),task_id: taskId,namespace: NLS_MODE,name: action,appkey: config.appkey},payload,context: {sdk: {name: 'nls-wx-sdk',version: '0.0.1',language: 'wxjs'}}}return JSON.stringify(msg, null, 0)
}/*** 开启连接,开启后立即要传,否则会被关闭.* @param config* @param callback*/
export const startClient = (conf?: INlsConfig,startCallback?: () => void,recognizedCallback?: (text: string) => void
) => {if (client && client.readyState !== WsState.CLOSED) {// 关闭原连接client.close({})}client = uni.connectSocket({url: conf.url ?? NLS_SERVER_URL,tcpNoDelay: true,header: {'X-NLS-Token': conf?.token ?? config.token},success: (res) => {if (!config) config = confconsole.log(`connected to ${NLS_SERVER_URL} success`)},fail: (res) => {console.log(`connect to ${NLS_SERVER_URL} failed:${res.errMsg}`)}})client.readyState = WsState.CONNECTINGclient.onMessage((res) => {if (typeof res.data === 'string') {const msgObj = JSON.parse(res.data)switch (msgObj?.header?.name) {case 'RecognitionStarted': {console.log('started')break}case 'RecognitionResultChanged': {if (recognizedCallback) {const text = msgObj?.payload?.resultif (text) {recognizedCallback(text)}}console.log('changed')break}case 'RecognitionCompleted': {const text = msgObj?.payload?.resultif (text) {recognizedCallback(text)}taskStarted = false // 结束识别break}case 'TaskFailed': {taskStarted = false // 结束识别break}}}console.log('recv:' + res.data)})client.onOpen(() => {reconnectAttempts = 0client.readyState = WsState.OPENif (startCallback) nextTick(startCallback)})client.onError((error) => {console.error('WebSocket error:', error)if (reconnectAttempts < WEBSOCKET_MAX_RETRY) {setTimeout(() => startClient(), RECONNECT_INTERVAL)} else {console.error('Max reconnect attempts reached')}})client.onClose(() => {client.readyState = WsState.CLOSEDconsole.log('connection closed')})
}export const startRecognition = () => {if (client && client.readyState === WsState.OPEN)client.send({data: buildMsg('StartRecognition', {format: 'opus',sample_rate: 16000,enable_intermediate_result: true,enable_punctuation_prediction: true,enable_inverse_text_normalization: true}),success: (res) => {taskStarted = true}})
}export const stopRecognition = () => {if (client && client.readyState === WsState.OPEN)client.send({data: buildMsg('StopRecognition', {format: 'opus',sample_rate: 16000,enable_intermediate_result: true,enable_punctuation_prediction: true,enable_inverse_text_normalization: true}),complete: () => {taskStarted = false // 不管是否成功,都不发送音频了}})
}export const sendSound = (msgBytes: ArrayBuffer) => {if (client && client.readyState === WsState.OPEN && taskStarted)client.send({data: msgBytes,success: (res) => {console.log('send ' + msgBytes.byteLength + ' success')}})
}

util的uuid工具见我前一篇文章https://mp.csdn.net/mp_blog/creation/editor/140267684icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/140267684

http://www.yayakq.cn/news/707144/

相关文章:

  • asp医院网站源码ip网站查询服务器
  • 昆明做网站需要多少钱wordpress头像缓存
  • 网站首页 seoui页面设计公司
  • 上海社区网站建设网站广告位价格一般多少
  • 那片海dede织梦源码企业网络公司工作室网站模板源码模板php深圳福田区有哪些大公司
  • 做网站什么好个人网站设计大全
  • 购买域名如何建设网站租号网站开发成本
  • 展会网站制作wordpress链接title属性
  • 网站平台开发多少钱专门提供做ppt小素材的网站
  • 龙岩市网站建设古典风格网站模版
  • 如何做网站详细步骤dede网站制作教程
  • 商城网站需要多少钱免费做问卷的网站
  • 深圳企业公司网站建设平台怎样开发app软件
  • 乐山市建设局官方网站网站打开的速度慢
  • 网站设计简单讲解灵宝网站建设
  • 濮阳做网站建设的公司帝国网站后台编辑器没有了
  • 网站建设优化两千字外链网站大全
  • 网站建设 开发的团队需要几个人建设注册管理中心网站
  • 想做水果外卖怎么做网站信息科技公司网站
  • 做百度企业网站有什么好处网站公司设计 网站首页
  • 网站如何做脚注网站开发服务器框架
  • 台州企业建站系统企业网站的缺点
  • 网站推广需要几个人做wordpress子域名网站
  • 怎么做网站的搜索引擎设计软件培训班学费一般多少
  • 网站投票制作建立网站需要多少钱湖南岚鸿
  • 做网站包括什么广州seo培训机构
  • 做天猫网站价格表wordpress插件怎么使用教程
  • 鲜花网站素材宝塔面板WordPress优化
  • 生物类培养基网站建设 中企动力站长源码之家
  • 网站建设需要注册什么类型的公司江苏建设工程有限公司简介