利用 Faster-Whisper 高精度语音识别与飞书内置 TTS,实现语音消息识别和双向语音交流回复。
name: feishu-whisper-voice是一项面向实际任务的技能,主要用于description: "使用 Faster-Whisper 进行高精度的语音识别,配合 TTS 实现完整的双向语音交流!飞书 Whisper + TTS 语音交互技能;
需要高精度的语音转文字(Whisper 准确率 >98%)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
当以下情况时使用此 Skill:
用户语音 → 下载音频 → Faster-Whisper 识别 → AI 处理 → TTS 转换 → 语音回复
优先使用机器人身份(无需授权):
feishu_im_bot_image(
message_id="om_xxx",
file_key="file_xxx",
type="audio"
)
用户身份(需要 OAuth 授权):
feishu_im_user_fetch_resource(
message_id="om_xxx",
file_key="file_xxx",
type="audio"
)
使用 faster-whisper 库进行高精度的语音转文字:
from faster_whisper import WhisperModel
# 初始化模型(自动下载 base 模型)
model = WhisperModel("base", device="cpu")
# 转录音频文件
segments, info = model.transcribe(audio_file)
print(f"识别语言:{info.language}, 置信度:{info.language_probability:.4f}")
for segment in segments:
print(f"[{segment.start:.2f}s - {segment.end:.2f}s] {segment.text}")
模型选项:
base: 142MB,CPU友好,推荐新手使用small: 466MB,平衡性能和准确率medium: 769MB,GPU 推荐(有 NVIDIA GPU 时使用)large: 1.5GB,最高精度使用飞书内置 tts() 工具:
await tts(text="你好,我是你的 AI 助手")
返回格式:
audio_urlasync def handle_voice_message(message_id: str) -> None:
# Step 1: 下载音频文件
audio_path = await feishu_im_bot_image(
message_id=message_id,
file_key=audio_file_key,
type="audio"
)
# Step 2: Whisper 识别
model = WhisperModel("base", device="cpu")
segments, info = model.transcribe(audio_path)
transcript = " ".join([seg.text for seg in segments])
print(f"用户说:{transcript}")
# Step 3: AI 处理(根据识别结果生成回复)
reply_text = generate_reply(transcript)
# Step 4: TTS 转换并发送语音消息
audio_result = await tts(text=reply_text)
print(f"AI 回复:{reply_text}")
faster-whisper >= 1.0.0 - Whisper 语音识别引擎openai-whisper (可选) - OpenAI Whisper API用于音频格式转换和质量优化:
# macOS brew install ffmpeg # Ubuntu/Debian sudo apt-get update && sudo apt-get install -y ffmpeg
用户发送语音消息,AI 识别后回复文字:
message_id = "om_xxx"
file_key = "file_xxx"
# 下载音频
audio_path = await feishu_im_bot_image(
message_id=message_id,
file_key=file_key,
type="audio"
)
# 识别语音
model = WhisperModel("base", device="cpu")
segments, info = model.transcribe(audio_path)
transcript = " ".join([seg.text for seg in segments])
# 生成回复
reply = f"我听到了:{transcript}"
# 发送文字消息
await message.send(
to=current_channel,
message=reply
)
用户说中文,AI 用语音回复:
async def voice_dialogue(message_id: str):
# 下载并识别
audio_path = await download_audio(message_id)
transcript = transcribe(audio_path)
# AI 处理
reply_text = generate_response(transcript)
# TTS 转换
audio_result = await tts(text=reply_text)
# 发送语音消息
await send_voice_message(
to=current_channel,
audio_url=audio_result["audio_url"]
)
CPU 模式(推荐新手):
model = WhisperModel("base", device="cpu")
# 预期速度:2-4x faster than real-time (Apple Silicon)
GPU 模式(NVIDIA):
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118
model = WhisperModel("medium", device="cuda")
# 预期速度:5-10x faster than real-time
Apple Silicon (M1/M2/M3):
model = WhisperModel("base", device="mps")
# Metal 加速,性能接近 GPU
Whisper 模型首次使用时自动下载:
~/.cache/huggingface/hub/症状: ConnectError: [Errno 65] No route to host
解决: 设置 HuggingFace 镜像站环境变量:
export HF_ENDPOINT=https://hf-mirror.com
或在 Python 代码中设置:
import os os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
症状: RuntimeError: CUDA not available
解决:
device="cpu"device="mps"创建时间: 2026-03-16
维护者: zhou (码农zhou)
版本: v1.0
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.5万人学习
最新文章