쿼리할 수 있는 전사본
Sanity Studio 문서의 오디오 옆에 전사 버튼이 생깁니다. 전사본은 편집 가능한 텍스트와 시간 정보가 있는 문장으로 문서에 저장되므로 GROQ, 프런트엔드, 검색이 다른 필드처럼 읽습니다.
SANITY STUDIO 3+ · REACT 18+ · NODE 20+ · 오디오 1시간당 $0.20부터GROQ로 쿼리하세요
전사본과 시간 정보가 있는 문장이 문서에 저장되므로 GROQ와 GraphQL API가 다른 모든 데이터와 함께 반환합니다.
눈에 보이는 진행 상황
필드에 오디오 처리 진행률이 표시되며 새로고침해도 유지됩니다. 더 이상 필요 없는 작업은 중지로 끝낼 수 있습니다.
편집자가 주도합니다
전사본은 편집자가 고칠 수 있는 일반 텍스트이며, 문서의 나머지 부분과 같은 기록과 게시 흐름을 따릅니다.
키는 서버에 머뭅니다
Studio는 API 키를 보관하는 자체 서버의 라우트 하나와만 통신합니다. 키는 브라우저에 전달되지 않습니다.
플러그인 하나, 필드 하나, 라우트 하나
sanity.config.ts에 플러그인을, 스키마의 오디오 옆에 vocalstack.transcript 필드를, 프런트엔드(Next.js 라우트나 아무 Node 또는 엣지 서버)에 VocalStack 라우트를 추가하세요. API 키는 라우트가 보관하므로 브라우저에 전달되지 않습니다.
vocalstack.transcript 필드를 추가한 다음 전사를 클릭합니다.npm install github:vocalstack/sanity-plugin// 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오디오에서 사용되는 언어. 생략하면 자동으로 감지합니다.
fileURLVocalStack이 오디오를 가져오는 주소. 기본값은 Sanity CDN에 있는 파일 주소이며, 비공개 파일에는 서명된 주소를 반환하세요.
allowedOrigins라우트를 호출할 수 있는 Studio 주소.
플러그인 요금 없음
전사한 오디오에 대해서만 대시보드 및 API와 같은 요금으로 VocalStack에 지불합니다. 초 단위로 청구되며, 전사당 최소 청구 시간은 5분입니다.
전사하는 모든 오디오 파일. 화자, 구두점, 타이밍 포함.