当前位置:   article > 正文

vue 语音转文字使用例子和解析 第三方科大讯飞_vue语音转文字

vue语音转文字

一、需求是什么?

需求:在vue的h5页面上使用科大讯飞的语音转文字功能 /聊天页面发送语音消息点击朗读

二、使用步骤

1.放入js文件(科大讯飞官方例子文件)

代码如下(示例):

  1. /**
  2. * Created by lycheng on 2019/8/1.
  3. *
  4. * 语音听写流式 WebAPI 接口调用示例 接口文档(必看):https://doc.xfyun.cn/rest_api/语音听写(流式版).html
  5. * webapi 听写服务参考帖子(必看):http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=38947&extra=
  6. * 语音听写流式WebAPI 服务,热词使用方式:登陆开放平台https://www.xfyun.cn/后,找到控制台--我的应用---语音听写---个性化热词,上传热词
  7. * 注意:热词只能在识别的时候会增加热词的识别权重,需要注意的是增加相应词条的识别率,但并不是绝对的,具体效果以您测试为准。
  8. * 错误码链接:
  9. * https://www.xfyun.cn/doc/asr/voicedictation/API.html#%E9%94%99%E8%AF%AF%E7%A0%81
  10. * https://www.xfyun.cn/document/error-code (code返回错误码时必看)
  11. * 语音听写流式WebAPI 服务,方言或小语种试用方法:登陆开放平台https://www.xfyun.cn/后,在控制台--语音听写(流式)--方言/语种处添加
  12. * 添加后会显示该方言/语种的参数值
  13. *
  14. */
  15. // 1. websocket连接:判断浏览器是否兼容,获取websocket url并连接,这里为了方便本地生成websocket url
  16. // 2. 获取浏览器录音权限:判断浏览器是否兼容,获取浏览器录音权限,
  17. // 3. js获取浏览器录音数据
  18. // 4. 将录音数据处理为文档要求的数据格式:采样率16k或8K、位长16bit、单声道;该操作属于纯数据处理,使用webWork处理
  19. // 5. 根据要求(采用base64编码,每次发送音频间隔40ms,每次发送音频字节数1280B)将处理后的数据通过websocket传给服务器,
  20. // 6. 实时接收websocket返回的数据并进行处理
  21. // ps: 该示例用到了es6中的一些语法,建议在chrome下运行
  22. import CryptoJS from 'crypto-js'
  23. import TransWorker from '@/js/transcode.worker.js'
  24. import './index.css'
  25. //import {getAuthUrl} from '@/api/websocketUrl.js'
  26. let transWorker = new TransWorker()
  27. //APPID,APISecret,APIKey在控制台-我的应用-语音听写(流式版)页面获取
  28. const APPID = '5ea8d439'
  29. const API_SECRET = 'f723e5fc58653672607a525aad6d22a'//6
  30. const API_KEY = '41252ac4bd31676c7944905ecfaffa8'//b
  31. /**
  32. * 获取websocket url
  33. * 该接口需要后端提供,这里为了方便前端处理
  34. */
  35. function getWebSocketUrl() {
  36. return new Promise((resolve, reject) => {
  37. // 请求地址根据语种不同变化
  38. var url = 'wss://iat-api.xfyun.cn/v2/iat'
  39. var host = 'iat-api.xfyun.cn'
  40. var apiKey = API_KEY
  41. var apiSecret = API_SECRET
  42. var date = new Date().toGMTString()
  43. var algorithm = 'hmac-sha256'
  44. var headers = 'host date request-line'
  45. var signatureOrigin = `host: ${host}\ndate: ${date}\nGET /v2/iat HTTP/1.1`
  46. var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, apiSecret)
  47. var signature = CryptoJS.enc.Base64.stringify(signatureSha)
  48. var authorizationOrigin = `api_key="${apiKey}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`
  49. var authorization = btoa(authorizationOrigin)
  50. url = `${url}?authorization=${authorization}&date=${date}&host=${host}`
  51. resolve(url)
  52. })
  53. }
  54. class IatRecorder {
  55. constructor({ language, accent, appId } = {}) {
  56. let self = this
  57. this.status = 'null'
  58. this.language = language || 'zh_cn'
  59. this.accent = accent || 'mandarin'
  60. this.appId = appId || APPID
  61. // 记录音频数据
  62. this.audioData = []
  63. // 记录听写结果
  64. this.resultText = ''
  65. //保存录音
  66. this.leftDataList = [],
  67. this.rightDataList = [];
  68. //保存录音 end
  69. // wpgs下的听写结果需要中间状态辅助记录
  70. this.resultTextTemp = ''
  71. transWorker.onmessage = function (event) {
  72. self.audioData.push(...event.data)
  73. }
  74. }
  75. // 修改录音听写状态
  76. setStatus(status) {
  77. this.onWillStatusChange && this.status !== status && this.onWillStatusChange(this.status, status)
  78. this.status = status
  79. }
  80. setResultText({ resultText, resultTextTemp } = {}) {
  81. console.log(resultText+'-----'+resultTextTemp)
  82. this.onTextChange && this.onTextChange(resultTextTemp || resultText || '')
  83. resultText !== undefined && (this.resultText = resultText)
  84. resultT
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/531167
推荐阅读
相关标签
  

闽ICP备14008679号