# 来源与转录设置

> 查看支持的视频链接，选择平台字幕或AI转录，并设置说话人分离和语言。

Canonical: https://transcript1.com/zh/docs/sources-and-options
Language: zh-Hans
Last updated: 2026-10-20

提交YouTube、X、TikTok、Instagram、Facebook或Bluesky的视频链接，或直接上传文件，即可开始转录。其他支持的平台、公开录制内容和链接格式见下表。在`POST /v1/transcriptions`的请求体中，还可以用`source`选择文本来源、用`diarize`开启说话人分离、用`language`指定语言；这些字段均可省略。

## 支持的平台

将视频链接填入`url`即可，API会自动识别平台。如果同时填写`platform`，其值必须与链接对应的平台一致。

| 平台 | 支持的链接 |
|---|---|
| YouTube（`youtube`） | 支持的具体格式见下方YouTube链接表。 |
| X（`x`） | 带视频的帖子，域名为`x.com`或`twitter.com`，如`https://x.com/user/status/1234567890`。 |
| TikTok（`tiktok`） | `tiktok.com`的视频帖子。也支持`vm.tiktok.com`、`vt.tiktok.com`和`www.tiktok.com/t/`短链接。 |
| Instagram（`instagram`） | `instagram.com`的Reels和视频帖子，路径为`/reel/`、`/reels/`、`/p/`或`/tv/`。Reel或帖子路径前带用户名也可以。 |
| Facebook（`facebook`） | `facebook.com`的视频和Reel，包括watch页面链接。也支持`fb.watch`、`/share/v/`和`/share/r/`短链接。 |
| Bluesky（`bluesky`） | 带视频的`bsky.app`帖子，如`https://bsky.app/profile/user.example/post/3l3w4b5c6d7e2`。 |
| [Twitch](https://transcript1.com/zh/features/twitch-vod-zhuan-wenzi)（`twitch`） | 已结束的直播回放（VOD）：`twitch.tv/videos/<id>`或`/<channel>/v/<id>`，其中`v`也可以写作`video`。剪辑：`clips.twitch.tv/<slug>`、`twitch.tv/<channel>/clip/<slug>`或`/clip/<slug>`。支持的域名包括`twitch.tv`、`www`、`m`、`go`及`clips.twitch.tv`。 |
| [Dailymotion](https://transcript1.com/zh/features/dailymotion-shipin-zhuan-wenzi)（`dailymotion`） | 视频路径为`dailymotion.com/video/<id>`（可附带`_title`）或`/embed/video/<id>`，短链接为`dai.ly/<id>`。也接受`www.dailymotion.com`和`touch.dailymotion.com`域名。 |
| [Pinterest](https://transcript1.com/zh/features/pinterest-shipin-zhuan-wenzi)（`pinterest`） | `pinterest.com`或`www.pinterest.com`的视频Pin，路径为`/pin/<id>/`或`/pin/<slug>--<id>/`。只读取Pin内第一个原生视频，不读取外部嵌入视频。不支持图片、画板、`pin.it`或地区域名。 |
| [LinkedIn](https://transcript1.com/zh/features/linkedin-shipin-zhuan-wenzi)（`linkedin`） | 公开视频帖子，域名为`linkedin.com`或`www.linkedin.com`，路径为`/posts/<slug>-<activity-id>-<four-character-suffix>`或`/feed/update/urn:li:activity:<id>/`。不支持个人主页、学习课程、活动页或`lnkd.in`。 |
| [Snapchat Spotlight](https://transcript1.com/zh/features/snapchat-spotlight-zhuanlu)（`snapchat`） | `snapchat.com`或`www.snapchat.com`的Spotlight视频，路径为`/spotlight/<id>`。不支持限时动态和个人主页。 |

Twitch、Dailymotion、Pinterest、LinkedIn和Snapchat Spotlight的链接必须使用HTTPS，不能带用户名、密码或自定义端口。只接受单条、公开且已录制完成的内容；私有帖子、需登录的帖子、直播、仍在处理的视频流、个人主页、信息流和合集均不支持。抓取时不会携带账号Cookie。

链接中的时间参数不会截取录音或视频。Twitch剪辑和Snapchat Spotlight返回的`media_id`可能无法从链接推算，应直接保存接口返回的字符串，不要自行生成ID。

X、TikTok、Instagram、Facebook和Bluesky也只接受公开帖子。同一帖子有多个视频时，只转录第一个。不支持个人主页、限时动态、直播页面或TikTok图片帖子。需要登录才能访问时，任务会报`login_required`；视频没有音轨时会报`no_audio`。这两种情况都不扣费。

YouTube、X、TikTok、Bluesky、Dailymotion和LinkedIn可以读取字幕，前提是视频有可用的原语言字幕。Instagram、Facebook、Twitch、Pinterest和Snapchat只能用AI语音转文字，`source`可选`auto`或`stt`，不能选`captions`。无论选哪个平台还是上传文件，都按实测时长和相同的每分钟单价计费。

短链接仅支持上表列出的格式。如果提交的社交平台分享链接尚不含帖子ID，就无法在提交时匹配已有转录。需要复用时，优先使用完整的帖子链接。

| 平台 | 字幕读取范围与时间戳 |
|---|---|
| YouTube和X | 读取已有字幕。其中，只有YouTube自动生成的字幕提供逐词时间戳。 |
| TikTok | 读取平台提供的VTT或SRT字幕，只有分段时间戳。 |
| Bluesky | 读取受支持、受信任PDS上的原生视频字幕，不支持任意其他联邦服务器、引用的视频或外部视频。只有分段时间戳。 |
| Dailymotion | 直接读取SRT字幕文件，不读取字幕播放列表。只有分段时间戳；识别到的`en-auto`、`fr-auto`字幕会标为`auto_generated`。 |
| LinkedIn | 读取公开原生视频的VTT字幕，只有分段时间戳。不支持LinkedIn Learning。 |

## YouTube链接格式

将完整视频链接填入`url`，省略`platform`或将其设为`youtube`。支持下列格式，域名带不带`www.`均可：

| 链接类型 | 示例 |
|---|---|
| 视频播放页 | `https://www.youtube.com/watch?v=dQw4w9WgXcQ` |
| 短链接 | `https://youtu.be/dQw4w9WgXcQ` |
| Shorts | `https://www.youtube.com/shorts/dQw4w9WgXcQ` |
| 嵌入式播放链接 | `https://www.youtube.com/embed/dQw4w9WgXcQ` |
| 直播页面链接 | `https://www.youtube.com/live/dQw4w9WgXcQ` |
| 移动版或音乐版域名 | `https://m.youtube.com/watch?v=dQw4w9WgXcQ`、`https://music.youtube.com/watch?v=dQw4w9WgXcQ` |

API会忽略`t`、`list`、`si`等额外查询参数，并将指向同一视频的不同链接识别为同一个视频。必须提交完整URL，不能只传11个字符的视频ID。频道页、只有播放列表的链接及其他不支持的链接均返回`422 invalid_url`。`platform`不受支持时，返回`422 unsupported_platform`，并通过`supported_platforms`列出可用值。

YouTube支持公开视频和非公开视频（unlisted）。私有视频会报`media_private`，有年龄限制的视频会报`age_restricted`，正在直播的视频会报`live_stream`。如果手头有自己的录制文件，可以改用[文件上传](https://transcript1.com/zh/docs/uploads)。

## source：选择字幕或AI转录

通过`source`指定读取平台字幕，还是转录音频：

| 参数值 | 处理方式 |
|---|---|
| `auto`（默认） | 在YouTube、X、TikTok、Bluesky、Dailymotion和LinkedIn上，先找可用的原语言字幕；找不到时，用AI语音转文字处理音频。 |
| `captions`（仅字幕） | 只读取支持字幕的平台，不下载音频，也不调用AI语音转文字。没有可用字幕时，任务报`no_captions`，不扣费；获取字幕内容失败则报`fetch_failed`。其他视频平台不接受此值，会返回`422 invalid_request`。 |
| `stt` | 不读取平台字幕，直接用AI语音转文字处理音频。 |

上传文件一律使用语音转文字。此时`source`只能选`auto`或`stt`，设置为`captions`会返回`422 invalid_request`。

字幕语言必须与`language`指定的语言一致；`language`为`auto`时，读取视频原语言的字幕。YouTube字幕须由创作者上传，或由YouTube按该语言生成，不会使用自动翻译字幕。选择顺序为创作者上传的字幕、来源未知的字幕、自动生成的字幕。来源未知不等于创作者上传。

X读取可用的VTT字幕，只提供分段时间戳，即使字幕是自动生成的，也没有逐词时间戳。使用`auto`时，字幕内容不可用或无法解析才可能改用STT；路由、存储或程序故障不会触发这种切换。使用`stt`则始终跳过字幕。

## diarize：区分说话人

需要区分谁在说话时，将`diarize`设为`true`，开启说话人分离。默认值为`false`。

- 说话人分离依赖语音转文字。因此，`source`为`auto`且`diarize: true`时，会直接转录音频，不读取字幕。
- 不能同时设置`source: "captions"`和`diarize: true`，否则返回`422 invalid_request`。
- 说话人使用`Speaker 1`、`Speaker 2`等标签。JSON中可从`transcript.speakers`和各段的`speaker`字段读取；`text`、`srt`会加上`Speaker 1: `前缀，`vtt`则使用`<v Speaker 1>`语音标签。

```json
{ "platform": "youtube", "url": "https://youtu.be/dQw4w9WgXcQ", "source": "stt", "diarize": true }
```

## language：指定语言

`language`默认是`auto`。也可以填入ISO 639-1双字母代码，如`en`、`de`或`es`。

- 读取字幕时，用它选择字幕语言。设为`auto`则读取视频原语言的字幕。
- 转录音频时，用它向语音转文字服务商提示语言。设为`auto`则自动识别语言，各段分别带有`language`字段。

转录对象本身的`language`字段表示整段录音的主要语言。

## 查看文本来源和时间戳

读取`transcript_source`即可知道文本来自平台字幕还是AI转录。可能的值为`youtube_captions`、`x_captions`、`tiktok_captions`、`bluesky_captions`、`dailymotion_captions`、`linkedin_captions`和`speech_to_text`。如果来自字幕，再看`caption_kind`：`manual`表示手动字幕，`auto_generated`表示自动生成，`null`表示来源未知。不要把`null`显示成“创作者上传”。

| | `youtube_captions`，`caption_kind`为`manual` | `youtube_captions`，`caption_kind`为`auto_generated` | `speech_to_text` |
|---|---|---|---|
| 如何分段 | 每条字幕对应一段 | 每条字幕对应一段 | 更换说话人、切换语言、遇到句末标点或达到15秒上限时分段 |
| 加上`include=words`后的逐词时间戳 | 不提供，`words`为`null` | 提供单词开始时间，结束时间取下个单词的开始时间 | 提供单词起止时间和`confidence` |
| 说话人分离 | 不提供 | 不提供 | `diarize`为`true`时提供 |
| 语言信息 | 字幕语言 | 字幕语言 | 各段分别识别 |

YouTube字幕保留发布时的原文，包括`[Music]`等标记。语音转文字最多处理5小时的音频或视频，超过此时长会报`media_too_long`。

X字幕（`x_captions`）以及TikTok、Bluesky、Dailymotion、LinkedIn字幕均只有分段时间戳，也不提供说话人分离。即使是自动生成的字幕，加上`include=words`后，各段仍返回`words: null`。需要AI逐词时间戳时，选择`source: "stt"`；需要区分说话人时，在`auto`或`stt`模式下设置`diarize: true`。

## 计费方式

读取字幕和AI语音转文字的单价相同。按录音或视频的分钟数向上取整，每分钟扣1积分。切换`source`只改变文本来源，不改变价格。详见[计费与限制](https://transcript1.com/zh/docs/billing-and-limits)。
