#!/usr/bin/env python3 """FunASR 音频转录脚本""" import sys import os import json try: from funasr import AutoModel except ImportError: print("❌ 错误:未找到 funasr 模块") print("") print("请先安装 FunASR:") print(" bash ~/.openclaw/workspace/skills/funasr-transcribe/scripts/install.sh") sys.exit(1) def transcribe_audio(audio_path): """使用 FunASR 转录音频""" print(f"正在处理音频: {audio_path}") print("首次运行会自动下载模型,可能需要几分钟...") # 加载模型 model = AutoModel( model="damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch", vad_model="damo/speech_fsmn_vad_zh-cn-16k-common-pytorch", punc_model="damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch", device="cpu" # 使用 CPU,如果有 GPU 可以改为 "cuda:0" ) # 进行语音识别 res = model.generate( input=audio_path, batch_size_s=300 ) return res def main(): if len(sys.argv) < 2: print("用法: python3 transcribe.py ") sys.exit(1) audio_path = sys.argv[1] # 检查文件是否存在 if not os.path.exists(audio_path): print(f"❌ 错误:文件不存在: {audio_path}") sys.exit(1) # 转录 try: result = transcribe_audio(audio_path) except Exception as e: print(f"❌ 转录失败: {e}") sys.exit(1) # 输出结果 text = "" if isinstance(result, list) and len(result) > 0: text = result[0].get("text", "") if not text: print("⚠️ 未识别到文本") sys.exit(0) print("\n" + "="*50) print("转录结果:") print("="*50) print(text) # 保存到文件 output_path = os.path.splitext(audio_path)[0] + ".txt" try: with open(output_path, "w", encoding="utf-8") as f: f.write(text) print("") print(f"✓ 已保存到: {output_path}") except Exception as e: print(f"\n⚠️ 保存文件失败: {e}") if __name__ == "__main__": main()