Logotipo do VocalStackLogotipo do VocalStack
VOCALSTACK PARA SANITY

Transcrições que você pode consultar

Um botão Transcrever ao lado do áudio nos seus documentos do Sanity Studio. A transcrição é salva no documento como texto editável e frases com tempo, então GROQ, o seu frontend e a sua busca a leem como qualquer outro campo.

SANITY STUDIO 3+ · REACT 18+ · NODE 20+ · A PARTIR DE $0.20 POR HORA DE ÁUDIO
acme.sanity.studio/structure/episode;42
AcmeStructureVision
ContentEpisodesHostsPages
EpisodesEpisódio 42: Construindo em públicoEpisode 41: PricingEpisode 40: Hiring
TítuloEpisódio 42: Construindo em público
Áudio
MP3episode-042.mp346.3 MB · audio/mpeg
Transcrição
Transcrevendo31:06 / 48:20
Parar
00:00Bem-vindos de volta ao programa. Hoje: lançar cedo.
00:07A primeira versão era tosca, e essa era a ideia.
Publish

Consulte com GROQ

A transcrição e suas frases com tempo ficam no documento, então GROQ e a API GraphQL as retornam junto com todo o resto.

Progresso que você vê

O campo mostra quanto do áudio já foi feito e sobrevive a um recarregamento. Parar encerra um trabalho que você não quer mais.

Os editores no comando

A transcrição é texto simples que um editor pode corrigir, com o mesmo histórico e publicação do resto do documento.

A chave fica no servidor

O Studio conversa com uma rota no seu próprio servidor, que guarda a chave de API. A chave nunca chega ao navegador.

CONFIGURAÇÃO

Um plugin, um campo, uma rota

Adicione o plugin ao sanity.config.ts, um campo vocalstack.transcript ao lado do áudio no seu schema e a rota do VocalStack ao seu frontend (uma rota do Next.js, ou qualquer servidor Node ou edge). A rota guarda a chave de API, então ela nunca chega ao navegador.

01Instale o plugin pelo GitHub e adicione-o à configuração do seu Studio.
02Adicione a rota do VocalStack ao seu frontend, com a sua chave de API no ambiente dela.
03Adicione um campo vocalstack.transcript ao lado de um campo de arquivo de áudio e clique em Transcrever.
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' }),
OPÇÕES

Encaixa no jeito que você construiu

Padrões sensatos, e um hook para cada ponto em que a sua configuração é diferente.

handlerURL

Onde a rota do VocalStack está montada no seu servidor. O Studio chama apenas esse endereço.

audioField

Qual campo de arquivo do documento contém o áudio. Por padrão, o primeiro com um arquivo de áudio.

spokenLanguage

O idioma falado no áudio. Omita para detectá-lo automaticamente.

fileURL

O endereço de onde o VocalStack busca o áudio. Por padrão, o endereço do arquivo na CDN do Sanity; retorne um endereço assinado para arquivos privados.

allowedOrigins

Quais endereços do Studio podem chamar a rota.

PREÇOS

Sem taxa de plugin

Você paga ao VocalStack só pelo áudio que transcreve, com a mesma tarifa do Painel e da API. Cobrança por segundo, com mínimo de 5 minutos por transcrição.

ARQUIVOS$0.20por hora

Cada arquivo de áudio que você transcreve, com locutores, pontuação e tempos incluídos.

Perguntas frequentes

Ver no GitHubLer o README