yuanflow-cli 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: 音视频在线转文字
3
+ description: 当用户需要把本地音频或视频通过 YuanFlow 在线 ASR 接口转成文字、云端转写、快速转写,或明确要求使用 doubao-asr 在线识别时使用。
4
+ ---
5
+
6
+ # 音视频在线转文字
7
+
8
+ 本 Skill 使用 YuanFlow 网关的在线 ASR 能力,把音频或视频转成文字。它不下载本地模型;如果用户明确要求离线、本地模型或本地 ASR,改用 `本地音视频转文字`。
9
+
10
+ ## 适用场景
11
+
12
+ - 用户要求“在线转文字”“云端转写”“快速转写”“音频识别”“视频提取文字”。
13
+ - 用户提供本地音频、视频文件路径,并希望得到完整文字稿。
14
+ - 用户明确要求 `doubao-asr`。
15
+
16
+ ## 固定流程
17
+
18
+ 1. 判断输入类型。
19
+ - 音频:直接进入上传流程。
20
+ - 视频:先用 ffmpeg 分离音频,再进入上传流程。
21
+ 2. 上传前把待上传音频整理为英文文件名。
22
+ - 官方参数只要求 `metadata.audio_url` 是可公网访问的音频 URL,没有说明必须英文文件名。
23
+ - 但为避免 OSS URL 编码、上游下载和中文文件名兼容问题,上传前必须使用 ASCII 英文文件名,例如 `transcription-input.mp3`。
24
+ 3. 使用 `OSS文件中转工具` 上传音频。
25
+ 4. 从 OSS 返回中优先取 `data.signed_url` 作为 ASR 的 `metadata.audio_url`。
26
+ - 不要优先使用裸域名 `data.url`;实测裸域名可能导致上游报 `Invalid audio URI` 或音频下载失败。
27
+ - 如果只有 `data.url`,必须补齐 `https://` 后再尝试;失败时说明 OSS URL 不可被 ASR 上游下载。
28
+ 5. 调用在线 ASR 接口。
29
+ 6. 默认只把干净文本返回给用户,不展示原始 JSON。
30
+ 7. 只有用户明确要求时间戳、分句、原始结构或调试信息时,才返回 JSON 摘要或原始字段。
31
+
32
+ ## 视频转音频
33
+
34
+ 视频输入必须先抽音频:
35
+
36
+ ```powershell
37
+ ffmpeg -y -i "C:\path\to\input.mp4" -vn -acodec libmp3lame -ar 44100 -ac 2 "transcription-input.mp3"
38
+ ```
39
+
40
+ 如果 ffmpeg 不可用,必须明确告诉用户缺少 ffmpeg,不能伪造转写结果。
41
+
42
+ ## OSS 上传
43
+
44
+ YuanFlow 主程序内优先调用 `yuanflow_cli_call`,使用 OSS 子命令上传英文命名后的音频:
45
+
46
+ ```json
47
+ {
48
+ "args": [
49
+ "oss",
50
+ "temp-upload",
51
+ "--file",
52
+ "C:\\path\\to\\transcription-input.mp3",
53
+ "--filename",
54
+ "transcription-input.mp3",
55
+ "--content-type",
56
+ "audio/mpeg",
57
+ "--format",
58
+ "agent-json"
59
+ ],
60
+ "timeout": 180
61
+ }
62
+ ```
63
+
64
+ 外部 Agent 可直接执行:
65
+
66
+ ```bash
67
+ yuanflow-cli oss temp-upload \
68
+ --file ./transcription-input.mp3 \
69
+ --filename transcription-input.mp3 \
70
+ --content-type audio/mpeg \
71
+ --format agent-json
72
+ ```
73
+
74
+ 解析返回时优先使用:
75
+
76
+ ```text
77
+ response.data.signed_url
78
+ ```
79
+
80
+ ## ASR 接口
81
+
82
+ 调用端点:
83
+
84
+ ```http
85
+ POST https://open.yuanchuangai.com/v1/audio/transcriptions
86
+ Authorization: Bearer <由 YuanFlow 自动注入>
87
+ Content-Type: application/json
88
+ ```
89
+
90
+ 请求体:
91
+
92
+ ```json
93
+ {
94
+ "model": "doubao-asr",
95
+ "response_format": "json",
96
+ "metadata": {
97
+ "audio_url": "<OSS signed_url>"
98
+ }
99
+ }
100
+ ```
101
+
102
+ 在 YuanFlow 主程序内优先使用 `yuanflow_gateway_request`:
103
+
104
+ ```json
105
+ {
106
+ "method": "POST",
107
+ "path": "/v1/audio/transcriptions",
108
+ "body": {
109
+ "model": "doubao-asr",
110
+ "response_format": "json",
111
+ "metadata": {
112
+ "audio_url": "<OSS signed_url>"
113
+ }
114
+ },
115
+ "timeout": 180
116
+ }
117
+ ```
118
+
119
+ ## 返回处理
120
+
121
+ 当前实测成功响应为:
122
+
123
+ ```json
124
+ {
125
+ "text": "完整转写文本..."
126
+ }
127
+ ```
128
+
129
+ 默认最终回复只输出 `text` 字段清洗后的文本内容。
130
+
131
+ 如果用户要求时间戳:
132
+
133
+ - 先检查接口返回里是否包含 `utterances`、`words`、`segments`、`start_time`、`end_time` 等结构。
134
+ - 如果本次接口没有返回时间戳字段,如实说明“当前网关响应只返回全文 text,未返回时间戳”。
135
+ - 不要编造时间戳。
136
+
137
+ ## 失败处理
138
+
139
+ - `Invalid audio URI` / `audio download failed`:优先检查是否误用了 `data.url` 裸域名;改用 `data.signed_url` 重试。
140
+ - OSS 上传成功但 ASR 失败:说明 OSS key 已生成,但上游无法下载或识别该 URL。
141
+ - 视频抽音频失败:报告 ffmpeg 错误,不继续调用 ASR。
142
+ - 不要暴露 token、Authorization header、签名 URL 的完整敏感查询参数,除非用户明确需要调试链接。