Overview Guides
Quick Start Guide
Learn how to get audio transcribed live in just minutes.
Register a webhook
Provide webhook details using a simple REST API. The only required field is callback_url, but you can provide auth details and more, if needed.
import requests
requests.post(
"null/api/speech-v1/webhooks/create",
headers={"X-API-Key": "xxx"},
data={
"callback_url": CALLBACK_URL,
"include_lives": true,
"username": USERNAME,
"password": PASSWORD
}
)
Output
{
"webhook_id": 12345
}
Once registered, you will be able to see it in your webhook registry:
[
{
"webhook_id": 12345,
"relevance": "user",
"callback_url": "CALLBACK_URL",
"include_partials": false,
"include_lives": true,
"include_edits": false,
"include_extras": false,
"auth": true
}
]
Register a transcription
Now that you’ve registered a webhook, you can easily create a new event for transcription. The only required field for this API is title, but you also must provide either a webcast_url or a phone_number to get things moving.
You can pass almost any URL as a webcast, so long as there is audio/video to capture; and, if you have it enabled it on your account, you can flag any event for human intervention on start-up (an agent will help get the event connected for you, handling forms, captchas, or other issues requiring human assistance) and/or human editing (an editor will perfect ASR output into a publish-quality transcript).
You can also provide an event_date to schedule connection/transcription for the future.
import requests
requests.post(
"null/api/speech-v1/events/create",
headers={"X-API-Key": "xxx"},
data={
"title": TITLE,
"webcast_url": WEBCAST_URL
}
)
Output
{
"event_id": 12345678
}
Handle incoming webhooks
Now that we have an active event, you will start seeing webhooks arrive at your callback_url as new information is available.
Started
Notice that the transcription has begun
{
"event_id": 12345678,
"event_type": "started",
"webhook_id": 12345,
"webhook_date": "2022-06-28T11:14:28.893369"
}
Ended
Notice that the transcription has concluded
{
"event_id": 12345678,
"event_type": "ended",
"webhook_id": 12345,
"webhook_date": "2022-06-28T11:14:28.893369"
}
Partial Transcript
Real-time, frequent transcript chunks that will eventually roll into a completed transcript segment. Partials will always be followed by a transcript type.
{
"event_id": 12345678,
"start_timestamp": "2022-06-27T13:43:59.337000",
"start_ms": 1948743,
"duration_ms": 25751,
"transcript": "This is a partial transcript...",
"event_type": "partial_transcript",
"webhook_id": 12345,
"webhook_date": "2022-06-28T11:25:42.372456"
}
Transcript
A finished transcript segment, associated with a unique transcript_item_id
{
"event_id": 12345678,
"transcript_item_id": 67891,
"start_timestamp": "2022-06-27T13:43:59.337000",
"start_ms": 1948743,
"duration_ms": 39134,
"speaker_id": 98765,
"transcript": "This is a partial transcript that has finished and we ill move to the next segment",
"event_type": "transcript",
"webhook_id": 12345,
"webhook_date": "2022-06-28T11:26:42.372456"
}
Improved Transcript
A more polished live transcript (performed by a larger ASR model) done immediately after live model execution
{
"event_id": 12345678,
"transcript_item_id": 67891,
"start_timestamp": "2022-06-27T13:43:59.337000",
"start_ms": 1948743,
"duration_ms": 39134,
"speaker_id": 98765,
"transcript": "This is a partial transcript that has finished and we I'll move to the next segment",
"event_type": "improved_transcript",
"webhook_id": 12345,
"webhook_date": "2022-06-28T11:26:42.372456"
}
Edited Transcript
Human-edits made to an existing live transcript, often happening semi-live (or during formal editing)
{
"event_id": 12345678,
"transcript_item_id": 67891,
"start_timestamp": "2022-06-27T13:43:59.337000",
"start_ms": 1948743,
"duration_ms": 39134,
"speaker_id": 98765,
"transcript": "This is a partial transcript that has finished and we ill move to the next segment",
"event_type": "edited_transcript",
"webhook_id": 12345,
"webhook_date": "2022-06-28T11:26:42.372456"
}
Official Transcript
A human-edited transcript segment corresponding to a transcript_item_id
{
"event_id": 12345678,
"transcript_item_id": 67891,
"start_timestamp": "2022-06-27T13:43:59.337000",
"start_ms": 1948743,
"duration_ms": 39134,
"speaker_id": 98765,
"transcript": "This is a partial transcript that has finished, and we will move to the next segment.",
"event_type": "official_transcript",
"webhook_id": 12345,
"webhook_date": "2022-06-29T11:26:42.372456"
}
Deleted Transcript
A notice that a transcript segment has been deleted
{
"event_id": 12345678,
"transcript_item_id": 67891,
"event_type": "deleted",
"webhook_id": 12345,
"webhook_date": "2022-06-29T11:26:42.372456"
}
Speaker Information
Model-identified speaker information
{
"event_id": 12345678,
"transcript_item_id": 67891,
"event_type": "speaker",
"speaker_type": "diarization",
"speaker": "SPEAKER_1",
"webhook_id": 12345,
"webhook_date": "2022-06-29T11:26:42.372456"
}
...or, just embed UI components!
Alternatively, you can opt to skip the webhooks altogether and just embed our JavaScript UI component directly into your website:
<script>
const asrTranscript = new Aiera.Module(
'https://public.aiera.com/aiera-sdk/0.0.49/modules/ASRTranscript/index.html',
'YOUR-ID'
)
asrTranscript.load().then(() => {
asrTranscript.authenticate({
apiKey: 'myPublicApiKeyHash',
})
asrTranscript.configure({
asrOptions: {
eventId: '12345678',
darkMode: true,
showTitleInfo: true,
showRecordingDetails: true,
showPriceReaction: true,
showSearch: true,
showAudioPlayer: true,
},
})
})
</script>