当前位置:   article > 正文

【uniapp】实现同声传译(长按语音转文字)、【node】识别图片中的文字并提取_uniapp 百度语音识别

uniapp 百度语音识别

uniapp

效果图:

 插件:

采用小程序插件:微信同声传译。插件文档定位

具体步骤:

  • 先登录小程序后台(项目别错了):官网传送
  • 然后 设置 => 第三方设置 => 添加插件 

  • 在插件文档里面拿到Appid和版本号

  • 在manifest.json切换成源码视图 然后在appid同级目录添加插件

  •  然后就是引用插件,开始使用了

完整代码:

  1. <template>
  2. <view>
  3. <view class="voicepad">
  4. {{voiceState}}
  5. </view>
  6. <button class="cu-btn bg-green voicebtn " @touchstart="touchStart" @touchend="touchEnd">
  7. <image src="../../static/logo.png" mode="widthFix" style="width: 50rpx;"></image>
  8. </button>
  9. <view class="center" style="background-color: #555555; color: #FFF;" v-show="isShow">
  10. 正在录音...
  11. </view>
  12. </view>
  13. </template>
  14. <script>
  15. var plugin = requirePlugin("WechatSI")
  16. let manager = plugin.getRecordRecognitionManager();
  17. export default {
  18. data() {
  19. return {
  20. voiceState: "你可以这样说...",
  21. isShow: false
  22. }
  23. },
  24. onShow() {
  25. },
  26. onLoad() {
  27. this.initRecord();
  28. },
  29. methods: {
  30. touchStart() {
  31. this.isShow = true
  32. manager.start({
  33. //指定录音的时长,单位ms,最大为60000
  34. duration: 60000,
  35. //识别的语言,目前支持zh_CN en_US zh_HK
  36. lang: "zh_CN"
  37. });
  38. },
  39. touchEnd() {
  40. uni.showToast({
  41. title: '录音完成',
  42. icon: "none"
  43. })
  44. this.isShow = false
  45. manager.stop();
  46. },
  47. /**
  48. * 初始化语音识别回调
  49. * 绑定语音播放开始事件
  50. */
  51. initRecord() {
  52. manager.onStart = (res) => {
  53. console.log('start', res.msg);
  54. this.voiceState = res.msg;
  55. };
  56. //有新的识别内容返回,则会调用此事件
  57. manager.onRecognize = (res) => {
  58. this.voiceState = res.result;
  59. console.log('onRecognize');
  60. }
  61. // 识别结束事件
  62. manager.onStop = (res) => {
  63. this.voiceState = res.result;
  64. console.log('onStop', res.result);
  65. }
  66. // 识别错误事件
  67. manager.onError = (res) => {
  68. this.voiceState = res.msg;
  69. console.log('onError');
  70. }
  71. },
  72. }
  73. }
  74. </script>
  75. <style>
  76. .voicebtn {
  77. height: 130upx;
  78. display: block;
  79. width: 130upx;
  80. line-height: 130upx;
  81. border-radius: 65upx;
  82. font-size: 50upx;
  83. position: absolute;
  84. top: 1060upx;
  85. left: 310upx;
  86. }
  87. .voicepad {
  88. height: 250upx;
  89. width: 680upx;
  90. background: #fff;
  91. margin: 30upx auto;
  92. border-radius: 8upx;
  93. padding: 20upx;
  94. font-size: 35upx;
  95. }
  96. .center {
  97. text-align: center;
  98. align-items: center;
  99. width: 200rpx;
  100. position: absolute;
  101. top: 50%;
  102. left: 50%;
  103. transform: translate(-50%, -50%);
  104. padding: 20rpx;
  105. border-radius: 20rpx;
  106. /* height: 50rpx; */
  107. opacity: 0.8;
  108. }
  109. </style>

注解:

@touchstart="touchStart"   手指触摸动作开始触发

@touchend="touchEnd"     手指触摸动作结束触发

问题:
有的朋友启用真机调试可以会报:error occurs:no such file or directory, access 'wxfile://usr/miniprogramLog/log2'

将2.0转为1.0就行了,发布后可正常 不会出现问题

node

效果图:

一、对接百度智能云

登录百度智能云:百度智能云-云智一体深入产业

新用户可以免费体验,按照下面来就行:

 创建应用之后就会有密钥啥的了

二、在node项目中安装依赖并使用 

所有依赖如下:

  1. "baidu-aip-sdk": "^4.16.12",
  2. "express": "^4.18.2",
  3. "multer": "^1.4.5-lts.1",
  4. "nodemon": "^2.0.22"

不知道安装命令可到此处查找:npm

index.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>图片上传</title>
  6. </head>
  7. <body>
  8. <form id="uploadForm">
  9. <input type="file" id="fileInput">
  10. <button type="submit">上传图片</button>
  11. </form>
  12. <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  13. <script>
  14. $(document).ready(function () {
  15. $('#uploadForm').submit(function (event) {
  16. event.preventDefault(); // 阻止表单的默认提交行为
  17. const formData = new FormData();
  18. formData.append('image', $('#fileInput')[0].files[0]);
  19. $.ajax({
  20. url: 'http://127.0.0.1:3000/upload',
  21. type: 'POST',
  22. data: formData,
  23. processData: false,
  24. contentType: false,
  25. success: function (result) {
  26. console.log(result);
  27. },
  28. error: function (error) {
  29. console.error(error);
  30. }
  31. });
  32. });
  33. });
  34. </script>
  35. </body>
  36. </html>

app.js,需要在app.js的同级目录下创建static存放图片

  1. var AipOcrClient = require("baidu-aip-sdk").ocr;
  2. const express = require('express')
  3. const multer = require('multer')
  4. const fs = require('fs');
  5. const path = require('path')
  6. const app = express()
  7. // 设置APPID/AK/SK
  8. var APP_ID = "xxxxxxx";
  9. var API_KEY = "xxxxxxxxxxxxxxxxxxxx";
  10. var SECRET_KEY = "xxxxxxxxxxxxxxxxxxxxx";
  11. // 新建一个对象,建议只保存一个对象调用服务接口
  12. var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);
  13. // diskStorage创建上传存储器
  14. const storage = multer.diskStorage({
  15. // 设置上传文件存储目录
  16. destination: function (req, file, cb) {
  17. cb(null, './static/')
  18. },
  19. //保存在 uploads 中的文件名
  20. filename: function (req, file, cb) {
  21. const extname = path.extname(file.originalname) // 获取文件后缀名
  22. const filename = Date.now() + '' + extname // 时间戳+后缀名 生成唯一文件名
  23. cb(null, filename)
  24. }
  25. })
  26. //创建一个名为upload的文件上传示例
  27. const upload = multer({ storage: storage })
  28. // 创建上传路由
  29. // upload.single('image') 处理单个文件上传
  30. app.post('/upload', upload.single('image'), (req, res) => {
  31. const file = req.file
  32. if (!file) {
  33. return res.status(400).send('请选择要上传的图片')
  34. }
  35. const filePath = req.file.path;
  36. // 读取文件
  37. fs.readFile(filePath, (err, data) => {
  38. if (err) {
  39. console.error(err);
  40. res.status(500).send('Failed to read the file.');
  41. return;
  42. }
  43. // 将文件数据转换为 Base64
  44. const base64Data = data.toString('base64');
  45. client.generalBasic(base64Data).then(function(result) {
  46. res.send(result)
  47. console.log(result);
  48. }).catch(function(err) {
  49. console.log(err);
  50. });
  51. });
  52. })
  53. const PORT = process.env.PORT || 3000;
  54. // 启动服务器
  55. app.listen(3000, () => {
  56. console.log(`Server running on http://localhost:${PORT}`)
  57. })

注解:

百度智能云更详细的可看文档:接口说明 - 文字识别OCR

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

闽ICP备14008679号