讯飞听见音频转写服务(纯 Python 架构)。支持:1)新文件一键转写(上传→转写→轮询→选权益→支付→下载结果);2)查询历史转写文件列表并下载结果;3)获取或创建AI会议纪要。当用户提出"转写音频"、"音频转文字"、"转写录音"、"生成会议纪要"、"查询我的转写"、"查看历史转写"、"查转写记录"、"获取会议纪要"、"帮我生成纪要&
讯飞听见音频转写是一项面向实际任务的技能,主要用于讯飞听见音频转写服务采用 纯 Python 架构 ,通过统一的 CLI 工具 xftj.py 提供完整的音频转写能力;核心优势 :;
执行前置检查(重要);在执行任何功能之前,必须先校验 API Key 是否有效:。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
讯飞听见音频转写服务采用纯 Python 架构,通过统一的 CLI 工具 xftj.py 提供完整的音频转写能力。
核心优势:
xftj.py CLI 调用~/.xftj/config.json在执行任何功能之前,必须先校验 API Key 是否有效:
python3 scripts/xftj.py validate
valid: true:API Key 有效,继续执行后续流程valid: false:API Key 无效或过期,使用 AskUserQuestion 工具询问用户「API Key 已失效,是否需要进行 OAuth 认证?」python3 scripts/xftj.py auth(会自动打开浏览器,用户授权后 API Key 自动保存)~/.xftj/config.json命令:
python3 scripts/xftj.py auth
流程:
https://www.iflyrec.com/xftjoauth/oauth/authorize?callbackUrl=http://localhost:{port}/callback&state={random_state}state 参数防止 CSRF 攻击apiKey 到 ~/.xftj/config.json回调参数说明:
| 场景 | 回调 URL 示例 | 说明 |
|---|---|---|
| 授权成功 | /callback?apiKey=sk-xxx&state=xxx |
apiKey 为驼峰命名 |
| 拒绝授权 | /callback?error=access_denied&state=xxx |
error 标识拒绝原因 |
返回结果(JSON):
授权成功:
{
"success": true,
"apiKey": "sk-..."
}
拒绝授权:
{
"success": false,
"error": "用户拒绝授权 (access_denied)"
}
安全机制:
state,回调时严格校验一致性,防止 CSRF 攻击。无论成功还是拒绝,都会校验 state。state 不匹配,返回 {"success": false, "error": "state 不匹配,可能存在 CSRF 攻击"}注意:认证过程中脚本会阻塞等待回调,用户需要在浏览器中完成授权操作。
Python 环境:Python 3 + requests 库
pip3 install requests
配置文件:~/.xftj/config.json
{
"apiKey": "your-api-key-here",
"baseUrl": "https://www.iflyrec.com"
}
baseUrl说明:所有 API 请求的基础地址,默认为https://www.iflyrec.com。 如需使用其他环境(如开发环境https://dev-integ-env.iflyrec.com),直接修改此字段即可。 若配置文件中不存在baseUrl,脚本自动使用默认值https://www.iflyrec.com。
# 安装 Python 依赖 pip3 install requests # 验证配置文件 cat ~/.xftj/config.json
流程分为两步,中间需要用户选择权益:
⏱️ 转写时长预估:文件越大,转写等待时间越长。大致参考:
- 30 分钟音频 ≈ 5 分钟
- 1 小时音频 ≈ 10 分钟
- 2 小时音频 ≈ 20 分钟
轮询过程中请耐心等待,不要中断程序。如用户询问进度,告知预估等待时间并继续轮询。
如果是上传文件夹(包含多个音频文件),请使用以下并行策略避免串行等待:
示例流程(假设文件夹有 7 个文件):
批次1: 上传 file1.mp3, file2.mp3, file3.mp3 → 并行轮询状态 批次2: 上传 file4.mp3, file5.mp3, file6.mp3 → 并行轮询状态 批次3: 上传 file7.mp3 → 轮询状态 → 汇总所有结果,统一让用户选择权益
为什么这样设计:
命令:
python3 scripts/xftj.py transcribe[--language cn]
返回结果(JSON):
{
"success": true,
"hjId": "PW-mz485272601849532416",
"quotas": [
{"id": 256574, "name": "[企业] 畅享包 - 剩余: 287886000ms", "type": "corpPermission"},
{"id": 189328312, "name": "[个人] 3小时·机器快转时长卡 - 剩余: 10800000ms", "type": "personalQuota"}
],
"message": "请选择权益进行支付"
}
重要:此时必须使用 AskUserQuestion 工具展示权益列表,让用户选择使用哪个权益进行支付。
根据用户选择的权益,调用支付并下载命令:
命令:
python3 scripts/xftj.py pay
参数说明:
hjId:第一步返回的转写记录 ID(字符串格式,如 PW-mz485272601849532416)quotaId:用户选择的权益 IDquotaType:权益类型,personalQuota(个人时长卡)、permission(个人畅享包)或 corpPermission(企业畅享包)返回结果(JSON):
{
"success": true,
"hjId": "PW-mz485272601849532416",
"content": "转写的文本内容..."
}
完整示例:
# 第一步:上传转写,获取权益列表 python3 scripts/xftj.py transcribe meeting.mp3 # (用户选择权益后)第二步:支付并下载 python3 scripts/xftj.py pay PW-mz485272601849532416 256574 corpPermission
查询文件列表:
python3 scripts/xftj.py list [--keyword 关键词] [--limit 20]
下载转写结果:
python3 scripts/xftj.py download
示例:
# 查询最近 20 条转写记录 python3 scripts/xftj.py list # 搜索包含"会议"的转写记录 python3 scripts/xftj.py list --keyword 会议 # 下载结果 python3 scripts/xftj.py download PW-mz485272601849532416
注意:download 命令内部会先通过列表接口查询 originAudioId,再调用 transcriptResults 接口获取转写文本,无需手动传入 originAudioId。
获取或创建 AI 纪要:
python3 scripts/xftj.py ai-summary
说明:
hj_id 为字符串格式(如 PW-mz485272601849532416),不是数字originAudioIdHYJY_CBB_INTERACTIVE_ADAPTIVE 模板生成交互式摘要示例:
python3 scripts/xftj.py ai-summary PW-mz485272601849532416
⏳ 轮询超时处理:AI 纪要生成通常需要 1-3 分钟,但有时会更久。轮询过程中:
- 每隔 2 分钟,使用
AskUserQuestion询问用户是否继续等待,选项为:
- 继续等待:继续轮询,再等 2 分钟后再次询问
- Agent 生成兜底方案:停止轮询,基于已获取的转写文本,由 Agent 直接生成一份会议纪要摘要(包含:主要议题、关键决策、行动项)
- 若用户选择兜底方案,告知用户「AI 纪要仍在后台生成,可稍后通过
ai-summary命令重试获取官方版本」
功能:完成从上传到结果下载的全流程转写
语法:
xftj.py transcribe[--language cn|en]
参数:
file_path:音频文件路径(必填)--language:语言类型,cn=中文(默认),en=英文返回:转写文本内容
功能:查询历史转写文件列表
语法:
xftj.py list [--keyword 关键词] [--limit 数量]
参数:
--keyword:搜索关键词(可选)--limit:返回数量,默认 20返回:转写文件列表(包含 hjId、文件名、状态等)
功能:获取指定转写文件的详细信息
语法:
xftj.py detail
参数:
hj_id:转写文件 ID(必填)返回:文件详情(包含时长、状态、创建时间等)
功能:下载指定转写文件的文本结果
语法:
xftj.py download
参数:
hj_id:转写文件 ID(必填)返回:转写文本内容
功能:获取或创建 AI 会议纪要(自动轮询直到完成)
语法:
xftj.py ai-summary
参数:
hj_id:转写文件 ID(必填)返回:AI 生成的会议纪要内容
功能:校验当前配置的 API Key 是否有效
语法:
xftj.py validate
返回(JSON):
{
"biz": {
"valid": true,
"userId": 2302041458060388,
"expiresTime": 4102415999000,
"name": "Default ApiKey",
"createTime": 1775183604000,
"lastUsedTime": null
}
}
字段说明:
valid:是否有效(true/false)userId:用户 IDexpiresTime:过期时间戳(毫秒)reason:失效原因(仅当 valid=false 时存在,如 API_KEY_INVALID、RATE_LIMIT_EXCEEDED)功能:通过 OAuth 流程获取新的 API Key
语法:
xftj.py auth
流程:
~/.xftj/config.json返回(JSON):
{
"success": true,
"apiKey": "sk-..."
}
主要方法:
get_upload_link() - 获取上传链接upload_file() - 上传音频文件start_transcription() - 启动转写任务poll_transcription_status() - 轮询转写状态query_benefits() - 查询可用权益pay_with_quota() - 使用权益支付get_origin_audio_id(hj_id) - 通过列表接口查询 originAudioId(orderId 字段匹配)get_transcript_results(hj_id, origin_audio_id, type) - 调用 transcriptResults/{type} 接口获取转写文本download_result(hj_id) - 自动查 originAudioId,依次尝试 type=16/18/21/25/35/50list_transcripts() - 查询转写列表validate_api_key() - 校验 API Key 是否有效转写结果类型说明:
type=16:逐字带时间戳的原始 JSON,适合字幕/卡拉OKtype=25:章节摘要视图,含纯文本全文,最易阅读type=18/21/35/50:通常为空,视账户功能而定主要方法:
run_oauth_flow() - 启动 OAuth 认证流程流程细节:
state 参数(22字符 URL-safe 字符串,用于 CSRF 防护)error 参数(拒绝授权)state 参数(防止 CSRF 攻击)apiKey 参数(驼峰命名)~/.xftj/config.json关键技术点:
apiKey(驼峰),不是 api_keystate 校验严格匹配,拒绝授权时也会校验_find_free_port())HYJY_CBB_INTERACTIVE_ADAPTIVE 模板(交互式摘要)aiResult 字段直接返回 Markdown 文本,无需 JSON 解析XFTJClient.get_origin_audio_id() 获取真实 originAudioId详见 examples/ 目录:
~/.xftj/config.json 配置正确,包含有效的 apiKeypip3 install requests)最常用命令:
# 校验 API Key(执行前必须) python3 scripts/xftj.py validate # OAuth 认证(Key 失效时) python3 scripts/xftj.py auth # 一键转写(最常用) python3 scripts/xftj.py transcribe# 查询历史 python3 scripts/xftj.py list # 生成纪要 python3 scripts/xftj.py ai-summary
说明:
scripts/xftj.pycd ~/.claude/skills/xftj-transcribepython3 ~/.claude/skills/xftj-transcribe/scripts/xftj.py配置文件位置:
~/.xftj/config.json
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.9万人学习
共49课时 | 82.5万人学习