205 lines
5.1 KiB
Plaintext
205 lines
5.1 KiB
Plaintext
|
|
====================================
|
|||
|
|
Whisper 服务连接诊断结果
|
|||
|
|
诊断时间: 2025-12-11 18:53
|
|||
|
|
====================================
|
|||
|
|
|
|||
|
|
【诊断结果】
|
|||
|
|
❌ Whisper 服务未正常运行
|
|||
|
|
|
|||
|
|
【详细检测】
|
|||
|
|
1. 端口检测: ❌ 失败
|
|||
|
|
- 端口 5001 未被监听
|
|||
|
|
- 无进程占用该端口
|
|||
|
|
|
|||
|
|
2. Python 进程: ❌ 未找到
|
|||
|
|
- 系统中没有运行的 Python 进程
|
|||
|
|
- Whisper 服务可能未启动
|
|||
|
|
|
|||
|
|
3. 连接测试: ❌ 失败
|
|||
|
|
- TCP 连接到 localhost:5001 失败
|
|||
|
|
- 连接被拒绝(端口未开放)
|
|||
|
|
|
|||
|
|
【问题根源】
|
|||
|
|
Whisper Python 服务没有启动!
|
|||
|
|
|
|||
|
|
【解决方案】
|
|||
|
|
|
|||
|
|
方案1:启动 Whisper 服务(推荐)
|
|||
|
|
---------------------------------------
|
|||
|
|
1. 找到 Whisper 服务目录
|
|||
|
|
例如: D:\whisper-service\ 或 /opt/whisper-service/
|
|||
|
|
|
|||
|
|
2. 进入目录并启动
|
|||
|
|
Windows:
|
|||
|
|
cd D:\whisper-service
|
|||
|
|
python app.py
|
|||
|
|
|
|||
|
|
Linux:
|
|||
|
|
cd /opt/whisper-service
|
|||
|
|
python3 app.py
|
|||
|
|
|
|||
|
|
3. 确认启动成功
|
|||
|
|
- 看到日志: "Running on http://0.0.0.0:5001"
|
|||
|
|
- 或访问: http://localhost:5001/health
|
|||
|
|
|
|||
|
|
4. 重新测试连接
|
|||
|
|
运行: powershell -File test_whisper_connection.ps1
|
|||
|
|
或访问: http://localhost:8080/test/whisper/check
|
|||
|
|
|
|||
|
|
|
|||
|
|
方案2:如果没有 Whisper 服务代码
|
|||
|
|
---------------------------------------
|
|||
|
|
需要先部署 Whisper 服务。创建简单的 Flask 服务:
|
|||
|
|
|
|||
|
|
1. 安装依赖
|
|||
|
|
pip install flask openai-whisper
|
|||
|
|
|
|||
|
|
2. 创建 app.py
|
|||
|
|
参考下面的"Whisper 服务示例代码"
|
|||
|
|
|
|||
|
|
3. 启动服务
|
|||
|
|
python app.py
|
|||
|
|
|
|||
|
|
|
|||
|
|
方案3:修改 Java 配置使用百度 API(临时方案)
|
|||
|
|
---------------------------------------
|
|||
|
|
如果暂时无法启动 Whisper,可以降级使用百度 API:
|
|||
|
|
|
|||
|
|
1. 在 application.yml 中配置百度 API 密钥
|
|||
|
|
2. 重启 Java 应用
|
|||
|
|
3. 系统会自动降级使用百度语音识别
|
|||
|
|
|
|||
|
|
|
|||
|
|
【Whisper 服务示例代码】
|
|||
|
|
---------------------------------------
|
|||
|
|
创建文件: whisper-service/app.py
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from flask import Flask, request, jsonify
|
|||
|
|
import whisper
|
|||
|
|
import os
|
|||
|
|
|
|||
|
|
app = Flask(__name__)
|
|||
|
|
|
|||
|
|
# 加载 Whisper 模型(首次运行会下载,需要网络)
|
|||
|
|
print("正在加载 Whisper 模型...")
|
|||
|
|
model = whisper.load_model("base") # 可选: tiny, base, small, medium, large
|
|||
|
|
print("✅ Whisper 模型加载完成")
|
|||
|
|
|
|||
|
|
@app.route('/health', methods=['GET'])
|
|||
|
|
def health():
|
|||
|
|
return jsonify({"status": "ok"})
|
|||
|
|
|
|||
|
|
@app.route('/recognize', methods=['POST'])
|
|||
|
|
def recognize():
|
|||
|
|
try:
|
|||
|
|
file = request.files['file']
|
|||
|
|
language = request.form.get('language', 'zh')
|
|||
|
|
|
|||
|
|
# 保存临时文件
|
|||
|
|
temp_path = f"/tmp/{file.filename}"
|
|||
|
|
file.save(temp_path)
|
|||
|
|
|
|||
|
|
# 识别
|
|||
|
|
result = model.transcribe(temp_path, language=language)
|
|||
|
|
text = result['text']
|
|||
|
|
|
|||
|
|
# 删除临时文件
|
|||
|
|
os.remove(temp_path)
|
|||
|
|
|
|||
|
|
return jsonify({
|
|||
|
|
"code": 200,
|
|||
|
|
"msg": "识别成功",
|
|||
|
|
"data": {"text": text}
|
|||
|
|
})
|
|||
|
|
except Exception as e:
|
|||
|
|
return jsonify({
|
|||
|
|
"code": 500,
|
|||
|
|
"msg": str(e)
|
|||
|
|
}), 500
|
|||
|
|
|
|||
|
|
@app.route('/evaluate', methods=['POST'])
|
|||
|
|
def evaluate():
|
|||
|
|
try:
|
|||
|
|
file = request.files['file']
|
|||
|
|
standard_text = request.form.get('text', '')
|
|||
|
|
|
|||
|
|
# 保存临时文件
|
|||
|
|
temp_path = f"/tmp/{file.filename}"
|
|||
|
|
file.save(temp_path)
|
|||
|
|
|
|||
|
|
# 识别
|
|||
|
|
result = model.transcribe(temp_path, language='zh')
|
|||
|
|
recognized_text = result['text']
|
|||
|
|
|
|||
|
|
# 删除临时文件
|
|||
|
|
os.remove(temp_path)
|
|||
|
|
|
|||
|
|
# 简单评分(基于相似度)
|
|||
|
|
similarity = calculate_similarity(recognized_text, standard_text)
|
|||
|
|
score = int(similarity * 100)
|
|||
|
|
|
|||
|
|
return jsonify({
|
|||
|
|
"code": 200,
|
|||
|
|
"msg": "评测成功",
|
|||
|
|
"data": {
|
|||
|
|
"text": recognized_text,
|
|||
|
|
"score": score,
|
|||
|
|
"accuracy": score,
|
|||
|
|
"fluency": score,
|
|||
|
|
"completeness": score,
|
|||
|
|
"pronunciation": score
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
except Exception as e:
|
|||
|
|
return jsonify({
|
|||
|
|
"code": 500,
|
|||
|
|
"msg": str(e)
|
|||
|
|
}), 500
|
|||
|
|
|
|||
|
|
def calculate_similarity(text1, text2):
|
|||
|
|
# 简单的相似度计算
|
|||
|
|
text1 = text1.replace(' ', '')
|
|||
|
|
text2 = text2.replace(' ', '')
|
|||
|
|
|
|||
|
|
if len(text2) == 0:
|
|||
|
|
return 0
|
|||
|
|
|
|||
|
|
matched = sum(1 for c in text1 if c in text2)
|
|||
|
|
return matched / len(text2)
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
print("🚀 启动 Whisper 服务...")
|
|||
|
|
print("📍 监听地址: http://0.0.0.0:5001")
|
|||
|
|
print("✅ 服务就绪,等待请求...")
|
|||
|
|
app.run(host='0.0.0.0', port=5001, debug=False)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
启动命令:
|
|||
|
|
cd whisper-service
|
|||
|
|
python app.py
|
|||
|
|
|
|||
|
|
|
|||
|
|
【后续步骤】
|
|||
|
|
|
|||
|
|
1. 启动 Whisper 服务后,运行测试:
|
|||
|
|
powershell -File test_whisper_connection.ps1
|
|||
|
|
|
|||
|
|
2. 确认连接成功后,重启 Java 应用
|
|||
|
|
|
|||
|
|
3. 使用测试接口验证:
|
|||
|
|
访问: http://localhost:8080/test/whisper/check
|
|||
|
|
|
|||
|
|
4. 在 APP 中测试语音识别功能
|
|||
|
|
|
|||
|
|
|
|||
|
|
【需要帮助?】
|
|||
|
|
|
|||
|
|
请提供以下信息:
|
|||
|
|
1. Whisper 服务是否已部署?在哪个目录?
|
|||
|
|
2. 是否有 Python 环境?版本是多少?
|
|||
|
|
3. 服务器操作系统?Windows 还是 Linux?
|
|||
|
|
4. 是否希望使用百度 API 替代方案?
|
|||
|
|
|
|||
|
|
====================================
|