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