VocalStack 标志VocalStack 标志
VOCALSTACK FOR SANITY

可查询的转录文本

在 Sanity Studio 文档中,音频旁都有一个“转录”按钮。转录文本以可编辑文本和带时间的句子保存在文档上,GROQ、您的前端和搜索都能像读取其他字段一样读取它。

SANITY STUDIO 3+ · REACT 18+ · NODE 20+ · 每小时音频 $0.20 起
acme.sanity.studio/structure/episode;42
AcmeStructureVision
ContentEpisodesHostsPages
Episodes第 42 期:公开构建Episode 41: PricingEpisode 40: Hiring
标题第 42 期:公开构建
音频
MP3episode-042.mp346.3 MB · audio/mpeg
转录文本
正在转录31:06 / 48:20
停止
00:00欢迎回到节目。今天的话题:尽早发布。
00:07第一个版本很粗糙,而这正是重点。
Publish

用 GROQ 查询

转录文本及其带时间的句子都存储在文档上,因此 GROQ 和 GraphQL API 会随其他内容一并返回。

进度一目了然

该字段显示已处理的音频进度,刷新页面后依然保留。点击“停止”即可结束不再需要的任务。

编辑始终掌控

转录文本是编辑可以修改的纯文本,与文档其他部分共享相同的历史记录和发布流程。

密钥留在服务器

Studio 只与您自己服务器上的一个路由通信,API 密钥就保存在那里。密钥绝不会到达浏览器。

设置

一个插件,一个字段,一个路由

将插件添加到 sanity.config.ts,在 schema 中音频旁添加一个 vocalstack.transcript 字段,并将 VocalStack 路由添加到您的前端(一个 Next.js 路由,或任意 Node 或边缘服务器)。API 密钥由路由保管,绝不会到达浏览器。

01从 GitHub 安装插件,并将其添加到您的 Studio 配置中。
02将 VocalStack 路由添加到您的前端,并把 API 密钥放入其环境变量。
03在音频文件字段旁添加一个 vocalstack.transcript 字段,然后点击“转录”。
bash
npm install github:vocalstack/sanity-plugin
typescript
// app/api/vocalstack/[...path]/route.ts
import { createVocalStackHandler } from '@vocalstack/sanity/server'

// The key is read from VOCALSTACK_API_KEY
const handler = createVocalStackHandler({ sanity: { projectId, dataset, token } })
export { handler as GET, handler as OPTIONS, handler as POST }

// sanity.config.ts
import { vocalstack } from '@vocalstack/sanity'

export default defineConfig({
  plugins: [vocalstack({ handlerURL: 'https://www.example.com/api/vocalstack' })],
})

// schemas/episode.ts
defineField({ name: 'audio', type: 'file' }),
defineField({ name: 'transcript', type: 'vocalstack.transcript' }),
选项

贴合您的构建方式

合理的默认值,并为您的配置中每个不同之处提供钩子。

handlerURL

VocalStack 路由在您服务器上的挂载位置。Studio 只调用这个地址。

audioField

文档上哪个文件字段存放音频。默认为第一个包含音频文件的字段。

spokenLanguage

音频中的口述语言。省略即可自动检测。

fileURL

VocalStack 获取音频的地址。默认为文件在 Sanity CDN 上的地址;私有文件请返回签名地址。

allowedOrigins

哪些 Studio 地址可以调用该路由。

价格

无插件费用

您只需为转录的音频向 VocalStack 付费,费率与控制台和 API 相同。按秒计费,每次转录最低 5 分钟。

文件$0.20/小时

您转录的每个音频文件,包含说话人、标点和时间信息。

常见问题

在 GitHub 上查看阅读 README