127 lines
4.0 KiB
Python
127 lines
4.0 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
语音识别使用示例
|
||
演示如何使用 speech_recognizer 模块
|
||
"""
|
||
|
||
import os
|
||
import asyncio
|
||
from speech_recognizer import SpeechRecognizer
|
||
|
||
async def example_recognize_file():
|
||
"""示例:识别单个音频文件"""
|
||
print("=== 示例1:识别单个音频文件 ===")
|
||
|
||
# 初始化识别器
|
||
recognizer = SpeechRecognizer(
|
||
app_key="your_app_key", # 请替换为实际的app_key
|
||
access_key="your_access_key" # 请替换为实际的access_key
|
||
)
|
||
|
||
# 假设有一个录音文件
|
||
audio_file = "recording_20240101_120000.wav"
|
||
|
||
if not os.path.exists(audio_file):
|
||
print(f"音频文件不存在: {audio_file}")
|
||
print("请先运行 enhanced_wake_and_record.py 录制一个音频文件")
|
||
return
|
||
|
||
try:
|
||
# 识别音频文件
|
||
results = await recognizer.recognize_file(audio_file)
|
||
|
||
print(f"识别结果(共{len(results)}个):")
|
||
for i, result in enumerate(results):
|
||
print(f"结果 {i+1}:")
|
||
print(f" 文本: {result.text}")
|
||
print(f" 置信度: {result.confidence}")
|
||
print(f" 最终结果: {result.is_final}")
|
||
print("-" * 40)
|
||
|
||
except Exception as e:
|
||
print(f"识别失败: {e}")
|
||
|
||
async def example_recognize_latest():
|
||
"""示例:识别最新的录音文件"""
|
||
print("\n=== 示例2:识别最新的录音文件 ===")
|
||
|
||
# 初始化识别器
|
||
recognizer = SpeechRecognizer(
|
||
app_key="your_app_key", # 请替换为实际的app_key
|
||
access_key="your_access_key" # 请替换为实际的access_key
|
||
)
|
||
|
||
try:
|
||
# 识别最新的录音文件
|
||
result = await recognizer.recognize_latest_recording()
|
||
|
||
if result:
|
||
print("识别结果:")
|
||
print(f" 文本: {result.text}")
|
||
print(f" 置信度: {result.confidence}")
|
||
print(f" 最终结果: {result.is_final}")
|
||
else:
|
||
print("未找到录音文件或识别失败")
|
||
|
||
except Exception as e:
|
||
print(f"识别失败: {e}")
|
||
|
||
async def example_batch_recognition():
|
||
"""示例:批量识别多个录音文件"""
|
||
print("\n=== 示例3:批量识别录音文件 ===")
|
||
|
||
# 初始化识别器
|
||
recognizer = SpeechRecognizer(
|
||
app_key="your_app_key", # 请替换为实际的app_key
|
||
access_key="your_access_key" # 请替换为实际的access_key
|
||
)
|
||
|
||
# 获取所有录音文件
|
||
recording_files = [f for f in os.listdir(".") if f.startswith('recording_') and f.endswith('.wav')]
|
||
|
||
if not recording_files:
|
||
print("未找到录音文件")
|
||
return
|
||
|
||
print(f"找到 {len(recording_files)} 个录音文件")
|
||
|
||
for filename in recording_files[:5]: # 只处理前5个文件
|
||
print(f"\n处理文件: {filename}")
|
||
try:
|
||
results = await recognizer.recognize_file(filename)
|
||
|
||
if results:
|
||
final_result = results[-1] # 取最后一个结果
|
||
print(f"识别结果: {final_result.text}")
|
||
else:
|
||
print("识别失败")
|
||
|
||
except Exception as e:
|
||
print(f"处理失败: {e}")
|
||
|
||
# 添加延迟,避免请求过于频繁
|
||
await asyncio.sleep(1)
|
||
|
||
async def main():
|
||
"""主函数"""
|
||
print("🚀 语音识别使用示例")
|
||
print("=" * 50)
|
||
|
||
# 请先设置环境变量或在代码中填入实际的API密钥
|
||
if not os.getenv("SAUC_APP_KEY") and "your_app_key" in "your_app_key":
|
||
print("⚠️ 请先设置 SAUC_APP_KEY 和 SAUC_ACCESS_KEY 环境变量")
|
||
print("或者在代码中填入实际的 app_key 和 access_key")
|
||
print("示例:")
|
||
print("export SAUC_APP_KEY='your_app_key'")
|
||
print("export SAUC_ACCESS_KEY='your_access_key'")
|
||
return
|
||
|
||
# 运行示例
|
||
await example_recognize_file()
|
||
await example_recognize_latest()
|
||
await example_batch_recognition()
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(main()) |