@@ -210,7 +210,34 @@ SpeakerStream.prototype.buildMessage = function() {
210
210
alt . timestamps = utterance . timestamps ;
211
211
// overwrite the final value
212
212
result . final = final ;
213
- // todo: split up words_alternatives, keywords, etc and copy to appropriate result for time
213
+
214
+ var start = utterance . timestamps [ 0 ] [ 1 ] ;
215
+ var end = utterance . timestamps [ utterance . timestamps . length - 1 ] [ 2 ] ;
216
+
217
+ // overwrite the word_alternatives
218
+ if ( utterance . result . word_alternatives ) {
219
+ var alts = utterance . result . word_alternatives . filter ( function ( walt ) {
220
+ return walt . start_time >= start && walt . end_time <= end ;
221
+ } ) ;
222
+ result . word_alternatives = alts ;
223
+ }
224
+
225
+ // overwrite the keywords spotted
226
+ /* eslint-disable camelcase */
227
+ var original_keywords_result = utterance . result . keywords_result ;
228
+ if ( original_keywords_result ) {
229
+ var keywords_result = { } ;
230
+ Object . keys ( original_keywords_result ) . forEach ( function ( keyword ) {
231
+ var spottings = original_keywords_result [ keyword ] . filter ( function ( spotting ) {
232
+ return spotting . start_time >= start && spotting . end_time <= end ;
233
+ } ) ;
234
+ if ( spottings . length ) {
235
+ keywords_result [ keyword ] = spottings ;
236
+ }
237
+ } ) ;
238
+ result . keywords_result = keywords_result ;
239
+ }
240
+ /* eslint-enable camelcase */
214
241
215
242
return result ;
216
243
} ) ;
0 commit comments