クエリできる文字起こし
Sanity Studio のドキュメントで、音声の横に「文字起こし」ボタンを。文字起こしは編集可能なテキストとタイミング付きの文としてドキュメントに保存されるため、GROQ もフロントエンドも検索も、ほかのフィールドと同じように読み取れます。
SANITY STUDIO 3+ · REACT 18+ · NODE 20+ · 音声 1 時間あたり $0.20 からGROQ でクエリ
文字起こしとタイミング付きの文はドキュメント上に保存されるため、GROQ と GraphQL API がほかのデータと一緒に返します。
進捗が見える
フィールドには処理済みの音声の割合が表示され、再読み込みしても消えません。不要になったジョブは「停止」で終了できます。
主導権は編集者に
文字起こしは編集者が修正できるプレーンテキストで、履歴も公開もドキュメントのほかの部分と同じように扱われます。
キーはサーバーに
Studio が通信するのは、API キーを保持する自社サーバー上の 1 つのルートだけ。キーがブラウザに届くことはありません。
プラグイン 1 つ、フィールド 1 つ、ルート 1 つ
sanity.config.ts にプラグインを、スキーマの音声の横に vocalstack.transcript フィールドを、フロントエンドに VocalStack のルート(Next.js のルート、または任意の Node サーバーやエッジサーバー)を追加します。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 のアドレス。
プラグイン料金なし
VocalStack へのお支払いは文字起こしした音声の分だけ。料金はダッシュボードや API と同じです。秒単位の課金で、文字起こし 1 件あたりの最低料金は 5 分 です。
文字起こしするすべての音声ファイル。話者、句読点、タイミング付き。