A small library which can parse TextGrid into json and json into TextGrid
Install the module with: npm install textgrid --save
vartextgrid=require('textgrid');constfs=require('fs')varsampleUtterancesTextGrid=fs.readFileSync('./test.TextGrid',{encoding: "UTF-8"});varjson=textgrid.TextGrid.textgridToJSON(sampleUtterancesTextGrid)console.log(json)Install the module with: bower install textgrid --save or,
Download the production version or the development version.
In your web app:
<scriptsrc="bower_components/textgrid/dist/textgrid.min.js"></script><script>vartextgridAsJson=TextGrid.textgridToIGT(originalTextGridAsText);</script>In your code, you can attach textgrid's methods to any object.
<script>varexports=Bocoup.utils;</script><scriptsrc="bower_components/textgrid/dist/textgrid.min.js"></script><script>vartextgridAsJson=Bocoup.utils.textgridToIGT(originalTextGridAsText);// "init"</script>An example of what you can do with the result.
vartextgrid=TextGrid.textgridToIGT(text);if(textgrid.isIGTNestedOrAlignedOrBySpeaker.probablyAligned){for(itemIndexintextgrid.intervalsByXmin){if(!textgrid.intervalsByXmin.hasOwnProperty(itemIndex)){continue;}if(textgrid.intervalsByXmin[itemIndex]){row={};for(intervalIndex=0;intervalIndex<textgrid.intervalsByXmin[itemIndex].length;intervalIndex++){interval=textgrid.intervalsByXmin[itemIndex][intervalIndex];row.startTime=row.startTime ? row.startTime : interval.xmin;row.endTime=row.endTime ? row.endTime : interval.xmax;row.utterance=row.utterance ? row.utterance : interval.text.trim();row.modality="spoken";row.tier=interval.tierName;row.speakers=interval.speaker;row.audioFileName=interval.fileName||audioFileName;row.CheckedWithConsultant=interval.speaker;consultants.push(row.speakers);row[interval.tierName]=interval.text;header.push(interval.tierName);}matrix.push(row);}}}else{for(itemIndexintextgrid.intervalsByXmin){if(!textgrid.intervalsByXmin.hasOwnProperty(itemIndex)){continue;}if(textgrid.intervalsByXmin[itemIndex]){for(intervalIndex=0;intervalIndex<textgrid.intervalsByXmin[itemIndex].length;intervalIndex++){row={};interval=textgrid.intervalsByXmin[itemIndex][intervalIndex];row.startTime=row.startTime ? row.startTime : interval.xmin;row.endTime=row.endTime ? row.endTime : interval.xmax;row.utterance=row.utterance ? row.utterance : interval.text.trim();row.modality="spoken";row.tier=interval.tierName;row.speakers=interval.speaker;row.audioFileName=interval.fileName||audioFileName;row.CheckedWithConsultant=interval.speaker;consultants.push(row.speakers);row[interval.tierName]=interval.text;header.push(interval.tierName);matrix.push(row);}}}}http://opensourcefieldlinguistics.github.io/FieldDB/
See tests directory for more ways to use the library
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
The "dist" subdirectory files are generated via Grunt. You'll find source code in the "lib" subdirectory!
- v1.102.3 April 22 2014 Long audio import support
- v2.2.0 April 22 2014 Support for multiple small files each corresponding to an utterance
Copyright (c) 2014 OpenSourceFieldLinguistics Contribs
Licensed under the Apache 2.0 license.
