Code Samples
Use the code samples below to integrate your applications with the API.
Node
Identify language for transcription using a webhook
attention
This example requires the Rev AI Node SDK and the Express framework.
The following example demonstrates a webhook handler that receives both language identification and transcription job results from the respective APIs. If the results are successful, it performs the following additional processing:
- For language identification jobs, it obtains the list of identified languages and the most probable language, and then initiates an asynchronous transcription request that includes this language information.
- For asynchronous transcription jobs, it obtains the final transcript and prints it to the console.
To use this example, replace the <REVAI_ACCESS_TOKEN>
placeholder with your Rev AI account's access token.
const { RevAiApiClient } = require('revai-node-sdk');
const bodyParser = require('body-parser');
const express = require('express');
const axios = require('axios');
const token = '<REVAI_ACCESS_TOKEN>';
// create Axios client
const http = axios.create({
baseURL: 'https://api.rev.ai/',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
// create Rev AI API client
const revAiClient = new RevAiApiClient(token);
const getLanguageIdentificationJobResult = async (jobId) => {
return await http.get(`languageid/v1beta/jobs/${jobId}/result`,
{ headers: { 'Accept': 'application/vnd.rev.languageid.v1.0+json' } })
.then(response => response.data)
.catch(console.error);
};
// create Express application
const app = express();
app.use(bodyParser.json());
// define webhook handler
app.post('/hook', async req => {
// get job, media URL, callback URL
const job = req.body.job;
const fileUrl = job.media_url;
const callbackUrl = job.callback_url;
console.log(`Received status for job id ${job.id}: ${job.status}`);
try {
switch (job.type) {
// language job result handler
case 'language_id':
if (job.status === 'completed') {
const languageJobResult = await getLanguageIdentificationJobResult(job.id);
// retrieve most probable language
// use as input to transcription request
const languageId = languageJobResult.top_language;
console.log(`Received result for job id ${job.id}: language '${languageId}'`);
const transcriptJobSubmission = await revAiClient.submitJobUrl(fileUrl, {
language: languageId,
callback_url: callbackUrl
});
console.log(`Submitted for transcription with job id ${transcriptJobSubmission.id}`);
}
break;
// transcription job result handler
case 'async':
if (job.status === 'transcribed') {
// retrieve transcript
const transcriptJobResult = await revAiClient.getTranscriptObject(job.id);
console.log(`Received transcript for job id ${job.id}`);
// do something with transcript
// for example: print to console
console.log(transcriptJobResult);
}
break;
}
} catch (e) {
console.error(e);
}
});
// start application on port 3000
app.listen(3000, () => {
console.log('Webhook listening');
})