外贸网站一般用什么框架,qq推广赚钱一个2元,黄骅港邮政编码,阿里云服务器怎么部署网站在快节奏的现代生活中#xff0c;听写技能仍然是学习语言和提升认知能力的重要环节。然而#xff0c;传统的听写练习往往枯燥乏味#xff0c;且效率不高。现在#xff0c;随着人工智能技术的发展#xff0c;大模型听写工具的问世#xff0c;为传统听写带来了革命性的变革…在快节奏的现代生活中听写技能仍然是学习语言和提升认知能力的重要环节。然而传统的听写练习往往枯燥乏味且效率不高。现在随着人工智能技术的发展大模型听写工具的问世为传统听写带来了革命性的变革。
大模型听写利用先进的语音识别技术能够实时准确地将口语转换为文字不仅提高了听写的准确率还极大地提升了效率。与传统听写相比大模型听写具有以下显著优势 高效率传统听写需要手动记录每一个单词而大模型听写可以自动完成这一过程节省了大量时间。 高准确性人工智能算法能够准确识别不同的口音和语速减少了人为错误。 个性化学习大模型听写可以根据用户的学习进度和需求提供个性化的听写材料和反馈。 互动性强许多大模型听写工具配备了互动功能如语音评估、即时反馈等使学习过程更加生动有趣。 随时随地学习只需一部智能手机或电脑就可以随时随地进行听写练习突破了时间和空间的限制。 数据追踪与分析大模型听写工具可以记录用户的学习数据帮助用户了解自己的学习进度和薄弱环节从而更有针对性地进行复习。 多语言支持对于多语言学习者来说大模型听写支持多种语言的听写练习是提升外语听力和写作能力的理想选择。 环境友好数字化的听写练习减少了纸张的使用更加环保。 易于分享与合作用户可以将自己的听写结果轻松分享给他人或者与他人在线合作完成听写任务。 持续更新与优化随着技术的不断进步大模型听写工具会持续更新和优化为用户提供更好的学习体验。
总之大模型听写以其高效、准确、便捷的特点正在逐渐取代传统听写成为现代人提升语言能力和认知水平的新选择。无论你是学生、教师还是终身学习者都可以从大模型听写中受益让学习变得更加轻松愉快。 templatediv classMult-container stylepadding: 10px;margin-bottom:50px; !--聊天窗口开始 --div styleheight: 150px;textarea v-modeltextstyleheight: 460px;width: 100%;padding: 20px; border: none;border-top: 1px solid #ccc;border-bottom: 1px solid #ccc;outline: none/textarea/divdiv styletext-align: left;padding-right: 10px;margin-top: 340px;el-button typeprimary sizemedium clickvoiceSendi classel-icon-microphone/i多语转文字/el-buttonel-button typedanger sizemedium clickstopVoice停止朗读/el-button/div/div
/templatescript// 初始化录音工具,注意目录
let recorder new Recorder(../../recorder)
recorder.onStart () {console.log(开始录音了)
}
recorder.onStop () {console.log(结束录音了)
}
// 发送中间帧和最后一帧
recorder.onFrameRecorded ({isLastFrame, frameBuffer}) {if (!isLastFrame wsFlag) { // 发送中间帧const params {header: {status: 1,app_id: },payload: {audio: {audio: toBase64(frameBuffer),sample_rate: 16000,encoding: raw}}}wsTask.send(JSON.stringify(params)) // 执行发送} else {if (wsFlag) {const params {header: {status: 2,app_id: },payload: {audio: {audio: ,sample_rate: 16000,encoding: raw}}}console.log(发送最后一帧, params, wsFlag)wsTask.send(JSON.stringify(params)) // 执行发送}}
}function toBase64(buffer) {let binary ;let bytes new Uint8Array(buffer);let len bytes.byteLength;for (let i 0; i len; i) {binary String.fromCharCode(bytes[i]);}return window.btoa(binary);
};let wsFlag false;
let wsTask {};
export default {name: Mult,data() {return {user: localStorage.getItem(user) ? JSON.parse(localStorage.getItem(user)) : {}, // 获取本地存储用户text: ,URL: wss://iat.cn-huabei-1.xf-yun.com/v1, // 听写地址resultText: ,resultTextTemp: ,}},methods: {async stopVoice() {if (await this.consumeBalance(this.user, 停止朗读)) {// 执行具体能力recorder.stop();this.$message.success(录音朗读停止)}},async voiceSend() { // 开始语音识别要做的动作if (await this.consumeBalance(this.user, 多语转文字)) {// 执行具体能力this.resultText ;this.resultTextTemp ;await this.wsInit();}},
// 建立ws连接async wsInit() {// this.iat ;this.$message.success(请您说出语音内容~)let _this this;if (typeof (WebSocket) undefined) {console.log(您的浏览器不支持ws...)} else {console.log(您的浏览器支持ws)let reqeustUrl await _this.getWebSocketUrl()wsTask new WebSocket(reqeustUrl);// ws的几个事件在vue中定义wsTask.onopen function () {console.log(ws已经打开...)wsFlag truelet params {header: {status: 0,app_id: atob(_this.user.appid),},parameter: {iat: {domain: slm,language: mul_cn,accent: mandarin,result: {encoding: utf8,compress: raw,format: json}}},payload: {audio: {audio: ,sample_rate: 16000,encoding: raw}}}console.log(发送第一帧数据...)wsTask.send(JSON.stringify(params)) // 执行发送// 下面就可以循环发送中间帧了// 开始录音console.log(开始录音)recorder.start({sampleRate: 16000,frameSize: 1280,});}wsTask.onmessage function (message) { // 调用第二个API 自动把语音转成文本console.log(收到数据 JSON.stringify(message.data))let parsedMessage JSON.parse(message.data);let code parsedMessage.header.code;let status parsedMessage.header.status;if (code ! 0) {console.log(请求错误${code});recorder.stop();wsTask.close();wsFlag false} else {let payload parsedMessage.payload;if (payload) {let text payload.result.text;let decodedString atob(text);let bytes new Uint8Array(decodedString.length);for (let i 0; i decodedString.length; i) {bytes[i] decodedString.charCodeAt(i);}let decoder new TextDecoder(utf-8);let utf8String decoder.decode(bytes);console.log(utf8String)let utf8JsonObject JSON.parse(utf8String)let textWs utf8JsonObject.ws;textWs.forEach(i {i.cw.forEach(j {_this.resultTextTemp j.w;_this.resultText _this.resultTextTemp;});});console.log(_this.resultText);_this.text _this.resultText || ;}if (status 2) {recorder.stop();wsTask.close();wsFlag false}}}// 关闭事件wsTask.onclose function () {console.log(ws已关闭...)}wsTask.onerror function () {console.log(发生错误...)}}},
// 获取鉴权地址与参数getWebSocketUrl() {return new Promise((resolve, reject) {// 请求地址根据语种不同变化var url this.URL;var host this.URL.host;var apiKeyName api_key;var date new Date().toGMTString();var algorithm hmac-sha256;var headers host date request-line;var signatureOrigin host: ${host}\ndate: ${date}\nGET /v1 HTTP/1.1;var signatureSha CryptoJS.HmacSHA256(signatureOrigin, atob(this.user.apisecret));var signature CryptoJS.enc.Base64.stringify(signatureSha);var authorizationOrigin ${apiKeyName}${atob(this.user.apikey)}, algorithm${algorithm}, headers${headers}, signature${signature};var authorization base64.encode(authorizationOrigin);url ${url}?authorization${authorization}date${encodeURI(date)}host${host};console.log(url)resolve(url); // 主要是返回地址});}}
}
/script!--scoped 不能加--
style
/style