172 lines
3.6 KiB
Markdown
172 lines
3.6 KiB
Markdown
|
|
# 语音评测新方案 - 快速开始
|
|||
|
|
|
|||
|
|
## ✅ 已完成
|
|||
|
|
|
|||
|
|
1. ✅ **禁用 UTS 插件** - 不再依赖本地编译
|
|||
|
|
2. ✅ **创建录音工具** - `utils/speech-recorder.js`
|
|||
|
|
3. ✅ **创建使用示例** - `语音评测-新方案使用示例.vue`
|
|||
|
|
4. ✅ **服务器部署指南** - 详细说明如何部署 Vosk
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 新方案架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
前端 (uni-app)
|
|||
|
|
↓ 使用 uni.getRecorderManager() 录音
|
|||
|
|
↓ 上传音频到内网服务器
|
|||
|
|
|
|||
|
|
服务器 (192.168.1.80:30091)
|
|||
|
|
↓ 接收音频文件
|
|||
|
|
↓ 调用 Vosk 识别引擎
|
|||
|
|
↓ 对比参考文本
|
|||
|
|
↓ 计算相似度评分
|
|||
|
|
↓ 返回结果
|
|||
|
|
|
|||
|
|
前端
|
|||
|
|
↓ 显示识别文本和评分
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 立即使用
|
|||
|
|
|
|||
|
|
### 步骤 1:复制录音工具到你的项目
|
|||
|
|
|
|||
|
|
文件已创建在:
|
|||
|
|
```
|
|||
|
|
fronted_uniapp/utils/speech-recorder.js
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤 2:在页面中使用
|
|||
|
|
|
|||
|
|
```vue
|
|||
|
|
<template>
|
|||
|
|
<view>
|
|||
|
|
<button @touchstart="startRecord" @touchend="stopRecord">
|
|||
|
|
按住录音
|
|||
|
|
</button>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import speechRecorder from '@/utils/speech-recorder.js'
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
methods: {
|
|||
|
|
startRecord() {
|
|||
|
|
speechRecorder.start()
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
async stopRecord() {
|
|||
|
|
const filePath = await speechRecorder.stop()
|
|||
|
|
const result = await speechRecorder.uploadAndRecognize(filePath, {
|
|||
|
|
referenceText: '你要评测的标准文本'
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
console.log('评分:', result.score)
|
|||
|
|
console.log('识别文本:', result.recognizedText)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤 3:现在可以云打包了!
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. HBuilderX → 清理项目
|
|||
|
|
2. 发行 → 原生APP-云打包
|
|||
|
|
3. Android + DCloud证书
|
|||
|
|
4. 等待 5-10 分钟
|
|||
|
|
5. 下载 APK
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**不再需要 UTS 插件,云打包应该能成功!**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 服务器端部署(稍后)
|
|||
|
|
|
|||
|
|
1. 在服务器 (192.168.1.80) 安装 Python 和 Vosk
|
|||
|
|
2. 运行识别服务
|
|||
|
|
3. 集成到现有 Spring Boot 后端
|
|||
|
|
|
|||
|
|
**详细步骤见:** `服务器端语音识别部署指南.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 💡 新方案优势
|
|||
|
|
|
|||
|
|
### vs UTS 插件
|
|||
|
|
|
|||
|
|
| 特性 | UTS 插件 | 新方案 |
|
|||
|
|
|------|---------|--------|
|
|||
|
|
| **云打包** | ❌ 编译失败 | ✅ 直接成功 |
|
|||
|
|
| **内网支持** | ✅ 支持 | ✅ 支持 |
|
|||
|
|
| **维护性** | ❌ 依赖复杂 | ✅ 简单 |
|
|||
|
|
| **扩展性** | ❌ 受限 | ✅ 灵活 |
|
|||
|
|
| **成本** | ❌ 可能需要付费 | ✅ 免费 |
|
|||
|
|
|
|||
|
|
### 关键优势
|
|||
|
|
|
|||
|
|
1. ✅ **云打包必成功** - 不依赖本地编译
|
|||
|
|
2. ✅ **完全内网** - Vosk 离线识别
|
|||
|
|
3. ✅ **易于维护** - 服务器端代码简单
|
|||
|
|
4. ✅ **功能更强** - 可以添加更多评测维度
|
|||
|
|
5. ✅ **免费开源** - 无需购买插件
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 替换现有语音功能
|
|||
|
|
|
|||
|
|
找到你项目中所有使用语音插件的地方:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 旧代码(UTS 插件)
|
|||
|
|
import speechToText from '@/uni_modules/xwq-speech-to-text'
|
|||
|
|
|
|||
|
|
// 新代码(录音工具)
|
|||
|
|
import speechRecorder from '@/utils/speech-recorder.js'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
替换调用方式:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 旧:
|
|||
|
|
const result = await speechToText.evaluate(text)
|
|||
|
|
|
|||
|
|
// 新:
|
|||
|
|
speechRecorder.start()
|
|||
|
|
const filePath = await speechRecorder.stop()
|
|||
|
|
const result = await speechRecorder.uploadAndRecognize(filePath, {
|
|||
|
|
referenceText: text
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚡ 现在可以打包了
|
|||
|
|
|
|||
|
|
**不需要等服务器部署好!**
|
|||
|
|
|
|||
|
|
1. 前端代码已经准备好
|
|||
|
|
2. 云打包会成功(不再依赖 UTS)
|
|||
|
|
3. 服务器接口可以稍后慢慢部署
|
|||
|
|
|
|||
|
|
**先打包 APK,测试其他功能!**
|
|||
|
|
|
|||
|
|
**语音功能等服务器部署好后再测试!**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 总结
|
|||
|
|
|
|||
|
|
- ✅ UTS 插件已禁用
|
|||
|
|
- ✅ 新录音工具已创建
|
|||
|
|
- ✅ 云打包不再卡住
|
|||
|
|
- ✅ 支持内网环境
|
|||
|
|
- ✅ 可以立即打包测试
|
|||
|
|
|
|||
|
|
**去 HBuilderX 云打包吧!** 🚀
|