@bbc/react-transcript-editor
Version:
A React component to make transcribing audio and video easier and faster.
55 lines (46 loc) • 1.52 kB
JavaScript
import bbcKaldiToDraft from './bbc-kaldi/index';
import autoEdit2ToDraft from './autoEdit2/index';
/**
* Adapters for STT conversion
* @param {json} transcriptData - A json transcript with some word accurate timecode
* @param {string} sttJsonType - the type of transcript supported by the available adapters
*/
// converts nested arrays into one dimensional array
const flatten = list => list.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []);
const createEntityMap = blocks => {
const entityRanges = blocks.map(block => block.entityRanges); // eslint-disable-next-line no-use-before-define
const flatEntityRanges = flatten(entityRanges);
const entityMap = {};
flatEntityRanges.forEach(data => {
entityMap[data.key] = {
type: 'WORD',
mutability: 'MUTABLE',
data
};
});
return entityMap;
};
const sttJsonAdapter = (transcriptData, sttJsonType) => {
let blocks;
switch (sttJsonType) {
case 'bbckaldi':
blocks = bbcKaldiToDraft(transcriptData);
return {
blocks,
entityMap: createEntityMap(blocks)
};
case 'autoedit2':
blocks = autoEdit2ToDraft(transcriptData);
return {
blocks,
entityMap: createEntityMap(blocks)
};
case 'draftjs':
return transcriptData;
// (typeof transcriptData === 'string')? JSON.parse(transcriptData): transcriptData;
default:
// code block
console.error('not recognised the stt enginge');
}
};
export default sttJsonAdapter;