Skip to content

Commit 7a14592

Browse files
author
Florian Treml
committed
BOT-2750 added start/end timecodes to STT stream
1 parent 5f7b45a commit 7a14592

File tree

3 files changed

+33
-13
lines changed

3 files changed

+33
-13
lines changed

frontend/src/stt/google.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class GoogleSTT {
4343

4444
const request = {
4545
config: {
46+
enableWordTimeOffsets: true,
4647
encoding: 'LINEAR16',
4748
sampleRateHertz: 16000,
4849
languageCode: language
@@ -74,13 +75,18 @@ class GoogleSTT {
7475
const events = new EventEmitter()
7576

7677
recognizeStream.on('data', (data) => {
77-
const transcription = data.results[0] && data.results[0].alternatives[0] ? data.results[0].alternatives[0].transcript : null
78-
if (transcription) {
79-
events.emit('data', {
80-
text: transcription,
78+
const alternative = data.results[0] && data.results[0].alternatives[0]
79+
if (alternative && alternative.transcript) {
80+
const event = {
81+
text: alternative.transcript,
8182
final: !!data.results[0].isFinal,
8283
debug: data
83-
})
84+
}
85+
if (alternative.words && alternative.words.length > 0) {
86+
event.start = _.round(_.toNumber(alternative.words[0].startTime.seconds) + _.toNumber(alternative.words[0].startTime.nanos) / 1000000000, 3)
87+
event.end = _.round(_.toNumber(alternative.words[alternative.words.length - 1].endTime.seconds) + _.toNumber(alternative.words[alternative.words.length - 1].endTime.nanos) / 1000000000, 3)
88+
}
89+
events.emit('data', event)
8490
}
8591
})
8692
recognizeStream.on('error', (err) => {

frontend/src/stt/ibm.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ class IbmSTT {
2121
objectMode: true,
2222
contentType: 'audio/wav',
2323
model: language,
24-
interimResults: true
24+
interimResults: true,
25+
timestamps: true
2526
}
2627
if (recognizeParams.model.length === 5) {
2728
recognizeParams.model = `${recognizeParams.model}_BroadbandModel`
@@ -46,11 +47,16 @@ class IbmSTT {
4647
for (const result of data.results || []) {
4748
const transcription = result.alternatives[0] ? result.alternatives[0].transcript : null
4849
if (transcription) {
49-
events.emit('data', {
50+
const event = {
5051
text: transcription,
5152
final: !!result.final,
5253
debug: result
53-
})
54+
}
55+
if (result.alternatives[0].timestamps && result.alternatives[0].timestamps.length > 0) {
56+
event.start = _.round(result.alternatives[0].timestamps[0][1], 3)
57+
event.end = _.round(result.alternatives[result.alternatives.length - 1].timestamps[0][2], 3)
58+
}
59+
events.emit('data', event)
5460
}
5561
}
5662
})

frontend/src/stt/kaldi.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class KaldiSTT {
1919
}
2020

2121
stt_OpenStream (req, { language }) {
22-
return new Promise((resolve) => {
22+
return new Promise((resolve, reject) => {
2323
const kaldiUrl = getKaldiUrl(language)
2424

2525
const qs = {
@@ -47,12 +47,19 @@ class KaldiSTT {
4747
ws.on('message', (data) => {
4848
try {
4949
const dj = JSON.parse(data)
50-
if (dj.result && dj.result.hypotheses && dj.result.hypotheses.length > 0) {
51-
events.emit('data', {
52-
text: dj.result.hypotheses[0].transcript,
50+
console.log(dj)
51+
const hypotheses = dj.result && dj.result.hypotheses && dj.result.hypotheses[0]
52+
if (hypotheses && hypotheses.transcript) {
53+
const event = {
54+
text: hypotheses.transcript,
5355
final: !!dj.result.final,
5456
debug: dj
55-
})
57+
}
58+
if (dj['total-length']) {
59+
event.start = _.round(_.toNumber(dj['total-length']) - _.toNumber(dj['segment-length']), 3)
60+
event.end = _.round(_.toNumber(dj['total-length']), 3)
61+
}
62+
events.emit('data', event)
5663
}
5764
} catch (err) {
5865
debug(`received non JSON content on stream, ignoring. ${err.message}`)
@@ -86,6 +93,7 @@ class KaldiSTT {
8693
}
8794
})
8895
})
96+
ws.on('error', (err) => reject(new Error(`Failed to open Kaldi stream to ${wsUri}: ${err.message}`)))
8997
})
9098
}
9199

0 commit comments

Comments
 (0)