feishu-whisper-voice

Polar Sponsor
爱发电 赞助
.NET 9.0

利用 Faster-Whisper 高精度语音识别与飞书内置 TTS,实现语音消息识别和双向语音交流回复。

name: feishu-whisper-voice

功能概述

name: feishu-whisper-voice是一项面向实际任务的技能,主要用于description: "使用 Faster-Whisper 进行高精度的语音识别,配合 TTS 实现完整的双向语音交流!飞书 Whisper + TTS 语音交互技能;

核心要点

  • 何时触发此技能;
  • 当以下情况时使用此 Skill;
  • 用户发送语音/音频消息需要识别和回复/语音聊天;

使用与执行

需要高精度的语音转文字(Whisper 准确率 >98%)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

name: feishu-whisper-voice description: "使用 Faster-Whisper 进行高精度的语音识别,配合 TTS 实现完整的双向语音交流!"

飞书 Whisper + TTS 语音交互技能

何时触发此技能

当以下情况时使用此 Skill:

  1. 用户发送语音/音频消息需要识别和回复/语音聊天
  2. 需要高精度的语音转文字(Whisper 准确率 >98%)
  3. 需要将 AI 回复转换为自然语音进行交互
  4. 用户提到"语音交互"、"说话"、"Faster-Whisper"、"TTS"等关键词

Faster-Whisper + TTS 架构

用户语音 → 下载音频 → Faster-Whisper 识别 → AI 处理 → TTS 转换 → 语音回复

核心优势

  • Faster-Whisper: 开源的语音识别模型,支持多语言,准确率极高
  • TTS: 飞书内置文本转语音工具,自然流畅
  • 双向交互: 既能听懂用户说话,也能用声音回复

工具集成

1. 下载语音文件

优先使用机器人身份(无需授权):

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"
)

2. Whisper 语音识别

使用 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,最高精度

3. TTS 文本转语音

使用飞书内置 tts() 工具:

await tts(text="你好,我是你的 AI 助手")

返回格式:

  • 成功:音频文件路径(Base64)或 audio_url
  • 失败:错误信息

4. 完整语音交互流程

async 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}")

依赖要求

Python 库

  • faster-whisper >= 1.0.0 - Whisper 语音识别引擎
  • openai-whisper (可选) - OpenAI Whisper API

FFmpeg (推荐安装)

用于音频格式转换和质量优化:

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y ffmpeg

使用示例

场景 1: 语音消息识别

用户发送语音消息,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
)

场景 2: 双向语音对话

用户说中文,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 vs GPU

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/
  • 大小: base 模型约 142MB
  • 管理: 删除后会自动重新下载

故障排除

Whisper 模型下载失败

症状: 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"

GPU 未检测到

症状: RuntimeError: CUDA not available

解决:

  1. 检查 NVIDIA 驱动安装
  2. 使用 CPU 模式回退:device="cpu"
  3. Apple Silicon 使用 MPS:device="mps"

最佳实践

  1. 优先使用 base 模型 - 在 CPU 上性能足够好,启动快
  2. 缓存模型文件 - 避免每次启动都下载
  3. 批量处理语音消息 - 减少重复加载模型的开销
  4. 设置合理的超时 - Whisper 识别可能需要几秒到几十秒

扩展阅读

  • Faster-Whisper GitHub
  • HuggingFace Whisper 模型
  • FFmpeg 官方文档

创建时间: 2026-03-16
维护者: zhou (码农zhou)
版本: v1.0

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习