VOCALSTACK FOR SANITY
可查询的转录文本
在 Sanity Studio 文档中,音频旁都有一个“转录”按钮。转录文本以可编辑文本和带时间的句子保存在文档上,GROQ、您的前端和搜索都能像读取其他字段一样读取它。
SANITY STUDIO 3+ · REACT 18+ · NODE 20+ · 每小时音频 $0.20 起用 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-plugintypescript
// 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' }),选项
贴合您的构建方式
合理的默认值,并为您的配置中每个不同之处提供钩子。
handlerURLVocalStack 路由在您服务器上的挂载位置。Studio 只调用这个地址。
audioField文档上哪个文件字段存放音频。默认为第一个包含音频文件的字段。
spokenLanguage音频中的口述语言。省略即可自动检测。
fileURLVocalStack 获取音频的地址。默认为文件在 Sanity CDN 上的地址;私有文件请返回签名地址。
allowedOrigins哪些 Studio 地址可以调用该路由。
文件$0.20/小时
您转录的每个音频文件,包含说话人、标点和时间信息。