Local-Voice/recognition_example.py
2025-09-20 10:53:56 +08:00

127 lines
4.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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())