当前位置:   article > 正文

uniapp小程序语音转文字功能_微信小程序 语音转文字

微信小程序 语音转文字

先看效果

首先是在微信公众平台),左侧菜单栏中的设置-->第三方设置下的插件管理-->添加-->搜索微信同声传译

 接下来打开你的项目

  1. // manifest.json
  2. "mp-weixin": {
  3. "appid": "xx", // 这是你小程序的AppId
  4. ...
  5. "plugins": {
  6. "WechatSI": {
  7. "version": "0.3.3", // 版本 可以自己去文档查看选择版本
  8. "provider": "wx069ba97219f66d99" // 插件id
  9. }
  10. }
  11. }

 做完以上步骤之后,就可以进行开发了,效果图里的业务代码不方便展示,我自己写了个demo可以直接复制粘贴

  1. <template>
  2. <view>
  3. <button @touchstart="streamRecord" @touchend="endStreamRecord" form-type="submit" type="primary"
  4. class="fc-white">语音识别按钮</button>
  5. <view> 语音识别内容:{{currentText}} </view>
  6. <!-- 语音音阶动画 长按说话时的动画 -->
  7. <view class="prompt" v-if="animation">
  8. <section class="dots-container">
  9. <view class="dot"></view>
  10. <view class="dot"></view>
  11. <view class="dot"></view>
  12. <view class="dot"></view>
  13. <view class="dot"></view>
  14. </section>
  15. <text>录音中...</text>
  16. </view>
  17. </view>
  18. </template>
  19. <script>
  20. var plugin = requirePlugin("WechatSI")
  21. let manager = plugin.getRecordRecognitionManager()
  22. export default {
  23. data() {
  24. return {
  25. currentText: "",
  26. animation: false,
  27. }
  28. },
  29. methods: {
  30. streamRecord: function() {
  31. console.log('开始')
  32. this.animation = true;
  33. manager.start({
  34. lang: 'zh_CN',
  35. })
  36. },
  37. endStreamRecord: function() {
  38. this.animation = false;
  39. console.log('结束')
  40. manager.stop()
  41. },
  42. initRecord: function() {
  43. //有新的识别内容返回,则会调用此事件
  44. manager.onRecognize = (res) => {
  45. let text = res.result
  46. this.currentText = text
  47. }
  48. // 识别结束事件
  49. manager.onStop = (res) => {
  50. console.log(res, 37);
  51. let text = res.result
  52. if (text == '') {
  53. console.log('没有说话')
  54. return
  55. }
  56. this.currentText = text
  57. }
  58. },
  59. },
  60. onLoad() {
  61. this.initRecord()
  62. },
  63. }
  64. </script>
  65. <style lang="scss" scoped>
  66. /* 动画 */
  67. .prompt {
  68. width: 100%;
  69. height: 160rpx;
  70. position: fixed;
  71. bottom: 50vh;
  72. }
  73. .prompt text {
  74. position: absolute;
  75. bottom: 2px;
  76. color: white;
  77. left: calc(45%);
  78. animation: puls 1.5s infinite ease-in-out;
  79. }
  80. .dots-container {
  81. display: flex;
  82. align-items: center;
  83. justify-content: center;
  84. height: 80px;
  85. width: 45%;
  86. position: absolute;
  87. bottom: 0px;
  88. left: calc(27.5%);
  89. background-color: rgba(0, 0, 0, 0.5);
  90. border-radius: 40rpx;
  91. }
  92. .dot {
  93. height: 28rpx;
  94. width: 28rpx;
  95. margin-right: 20rpx;
  96. border-radius: 20rpx;
  97. background-image: linear-gradient(#5396FF, #AEDAFF);
  98. animation: pulse 1.5s infinite ease-in-out;
  99. }
  100. .dot:last-child {
  101. margin-right: 0;
  102. }
  103. .dot:nth-child(1) {
  104. animation-delay: -0.3s;
  105. }
  106. .dot:nth-child(2) {
  107. animation-delay: -0.1s;
  108. }
  109. .dot:nth-child(3) {
  110. animation-delay: 0.1s;
  111. }
  112. @keyframes pulse {
  113. 0% {
  114. transform: scale(0.8);
  115. background-color: #66A3FF;
  116. /* 更改为与.dot背景色相近的颜色 */
  117. box-shadow: 0 0 0 0 rgba(102, 163, 255, 0.7);
  118. /* 使用相同的颜色 */
  119. }
  120. 50% {
  121. transform: scale(1.2);
  122. background-color: #ADD8FF;
  123. /* 稍浅的颜色,增加对比度 */
  124. box-shadow: 0 0 0 10px rgba(174, 218, 255, 0);
  125. /* 使用.dot的结束颜色,但透明度为0 */
  126. }
  127. 100% {
  128. transform: scale(0.8);
  129. background-color: #66A3FF;
  130. /*0%时的颜色相同 */
  131. box-shadow: 0 0 0 0 rgba(102, 163, 255, 0.7);
  132. /*0%时的box-shadow相同 */
  133. }
  134. }
  135. @keyframes puls {
  136. 0% {
  137. transform: translateY(0px)
  138. }
  139. 50% {
  140. transform: translateY(-4px)
  141. }
  142. 100% {
  143. transform: translateY(0px)
  144. }
  145. }
  146. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/613447
推荐阅读
相关标签
  

闽ICP备14008679号