@deepgram/captions
Version:
Node implementation of Deepgram's WebVTT and SRT formatting. Given a transcription, this package can return a valid string to store as WebVTT or SRT caption files.
61 lines (52 loc) • 1.56 kB
text/typescript
import { chunkArray } from "../lib/helpers";
import { WordBase } from "../lib/types";
import { IConverter } from "./IConverter";
const wordMap = (word: any): WordBase => {
return {
word: word.text,
start: word.start,
end: word.end,
confidence: word.confidence,
punctuated_word: word.text,
speaker: word.speaker,
};
};
export class AssemblyAiConverter implements IConverter {
constructor(public transcriptionData: any) {}
getLines(lineLength: number = 8): WordBase[][] {
const results = this.transcriptionData;
let content: WordBase[][] = [];
if (results.utterances) {
results.utterances.forEach((utterance: any) => {
if (utterance.words.length > lineLength) {
content.push(
...chunkArray(
utterance.words.map((w: any) => wordMap(w)),
lineLength
)
);
} else {
content.push(utterance.words.map((w: any) => wordMap(w)));
}
});
} else {
content.push(
...chunkArray(
results.words.map((w: any) => wordMap(w)),
lineLength
)
);
}
return content;
}
getHeaders(): string[] {
const output: string[] = [];
output.push("NOTE");
output.push("Transcription provided by Assembly AI");
this.transcriptionData.id ? output.push(`Id: ${this.transcriptionData.id}`) : null;
this.transcriptionData.audio_duration
? output.push(`Duration: ${this.transcriptionData.audio_duration}`)
: null;
return output;
}
}