89 lines
2.8 KiB
Python
89 lines
2.8 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
"""
|
|||
|
|
测试修复后的 ASR 端点
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import requests
|
|||
|
|
import os
|
|||
|
|
from dotenv import load_dotenv
|
|||
|
|
|
|||
|
|
# 加载环境变量
|
|||
|
|
load_dotenv()
|
|||
|
|
|
|||
|
|
def test_asr_endpoint():
|
|||
|
|
"""测试 ASR 端点"""
|
|||
|
|
try:
|
|||
|
|
# 创建一个测试音频文件
|
|||
|
|
import wave
|
|||
|
|
import numpy as np
|
|||
|
|
|
|||
|
|
# 生成3秒的测试音频(16kHz, 单声道)
|
|||
|
|
sample_rate = 16000
|
|||
|
|
duration = 3
|
|||
|
|
frequency = 440 # A4音符
|
|||
|
|
|
|||
|
|
t = np.linspace(0, duration, sample_rate * duration, False)
|
|||
|
|
audio_data = np.sin(2 * np.pi * frequency * t) * 0.3
|
|||
|
|
audio_data = (audio_data * 32767).astype(np.int16)
|
|||
|
|
|
|||
|
|
# 保存为WAV文件
|
|||
|
|
with wave.open('test_audio.wav', 'wb') as wav_file:
|
|||
|
|
wav_file.setnchannels(1) # 单声道
|
|||
|
|
wav_file.setsampwidth(2) # 16-bit
|
|||
|
|
wav_file.setframerate(sample_rate) # 16kHz
|
|||
|
|
wav_file.writeframes(audio_data.tobytes())
|
|||
|
|
|
|||
|
|
print("✅ 创建测试音频文件")
|
|||
|
|
|
|||
|
|
# 测试ASR端点
|
|||
|
|
url = "http://192.168.1.141:30101/voice/call/asr"
|
|||
|
|
|
|||
|
|
# 获取token(如果需要)
|
|||
|
|
token = os.getenv('TEST_TOKEN', '')
|
|||
|
|
headers = {}
|
|||
|
|
if token:
|
|||
|
|
headers['Authorization'] = f'Bearer {token}'
|
|||
|
|
|
|||
|
|
print(f"🚀 测试 ASR 端点: {url}")
|
|||
|
|
|
|||
|
|
with open('test_audio.wav', 'rb') as f:
|
|||
|
|
files = {'audio': ('test_audio.wav', f, 'audio/wav')}
|
|||
|
|
|
|||
|
|
print("📤 发送请求...")
|
|||
|
|
response = requests.post(url, files=files, headers=headers, timeout=60)
|
|||
|
|
|
|||
|
|
print(f"📊 响应状态码: {response.status_code}")
|
|||
|
|
print(f"📋 响应内容: {response.text}")
|
|||
|
|
|
|||
|
|
if response.status_code == 200:
|
|||
|
|
data = response.json()
|
|||
|
|
if data.get('code') == 1 and data.get('data', {}).get('text'):
|
|||
|
|
print(f"✅ ASR 成功: {data['data']['text']}")
|
|||
|
|
return True
|
|||
|
|
else:
|
|||
|
|
print(f"⚠️ ASR 响应格式异常: {data}")
|
|||
|
|
return True # 仍然算成功,因为没有超时
|
|||
|
|
else:
|
|||
|
|
print(f"❌ ASR 请求失败: {response.status_code}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
except requests.exceptions.Timeout:
|
|||
|
|
print("❌ 请求超时")
|
|||
|
|
return False
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"❌ 测试失败: {e}")
|
|||
|
|
return False
|
|||
|
|
finally:
|
|||
|
|
# 清理测试文件
|
|||
|
|
try:
|
|||
|
|
os.remove('test_audio.wav')
|
|||
|
|
except:
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
print("🚀 开始测试修复后的 ASR 端点...")
|
|||
|
|
|
|||
|
|
if test_asr_endpoint():
|
|||
|
|
print("🎉 ASR 端点测试成功!")
|
|||
|
|
else:
|
|||
|
|
print("💥 ASR 端点测试失败!")
|