Skip to content

Commit de43dfe

Browse files
committed
event history for all STT providers
1 parent b821620 commit de43dfe

File tree

4 files changed

+48
-12
lines changed

4 files changed

+48
-12
lines changed

frontend/src/stt/awstranscribe.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class AwsTranscribeSTT {
7878
applyIfExists(request, req, 'req.body.awstranscribe.config.streaming')
7979

8080
const events = new EventEmitter()
81+
const eventHistory = []
8182
try {
8283
const cmdResponse = await transcribeClient.send(new StartStreamTranscriptionCommand(request))
8384
setTimeout(async () => {
@@ -96,15 +97,18 @@ class AwsTranscribeSTT {
9697
debug: result
9798
}
9899
events.emit('data', event)
100+
eventHistory.push(event)
99101
}
100102
}
101103
}
102104
} catch (err) {
103105
debug(`TranscriptResultStream failure: ${err.Message || err.message || err}`)
104-
events.emit('data', {
106+
const event = {
105107
status: 'error',
106-
err: `${err.message || err}`
107-
})
108+
err: `AWS Transcribe STT failed: ${err.message || err}`
109+
}
110+
events.emit('data', event)
111+
eventHistory.push(event)
108112
}
109113
events.emit('close')
110114
debug('Ready listening to TranscriptResultStream ')
@@ -128,6 +132,11 @@ class AwsTranscribeSTT {
128132
audioInputStream.destroy()
129133
}
130134
audioInputStream = null
135+
},
136+
triggerHistoryEmit: () => {
137+
for (const eh of eventHistory) {
138+
events.emit('data', eh)
139+
}
131140
}
132141
}
133142
}

frontend/src/stt/google.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class GoogleSTT {
7373
const bufferStream = new PassThrough()
7474
bufferStream.pipe(recognizeStream)
7575
const events = new EventEmitter()
76+
const eventHistory = []
7677

7778
recognizeStream.on('data', (data) => {
7879
const alternative = data.results[0] && data.results[0].alternatives[0]
@@ -88,13 +89,16 @@ class GoogleSTT {
8889
event.end = _.round(_.toNumber(alternative.words[alternative.words.length - 1].endTime.seconds) + _.toNumber(alternative.words[alternative.words.length - 1].endTime.nanos) / 1000000000, 3)
8990
}
9091
events.emit('data', event)
92+
eventHistory.push(event)
9193
}
9294
})
9395
recognizeStream.on('error', (err) => {
94-
events.emit('data', {
96+
const event = {
9597
status: 'error',
96-
err: `${err.message}`
97-
})
98+
err: `Google STT failed: ${err.message}`
99+
}
100+
events.emit('data', event)
101+
eventHistory.push(event)
98102
})
99103
recognizeStream.on('close', () => {
100104
events.emit('close')
@@ -115,6 +119,11 @@ class GoogleSTT {
115119
recognizeStream.destroy()
116120
}
117121
recognizeStream = null
122+
},
123+
triggerHistoryEmit: () => {
124+
for (const eh of eventHistory) {
125+
events.emit('data', eh)
126+
}
118127
}
119128
}
120129
}

frontend/src/stt/ibm.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class IbmSTT {
4242
const bufferStream = new PassThrough()
4343
bufferStream.pipe(recognizeStream)
4444
const events = new EventEmitter()
45+
const eventHistory = []
4546

4647
recognizeStream.on('data', (data) => {
4748
for (const result of data.results || []) {
@@ -58,14 +59,17 @@ class IbmSTT {
5859
event.end = _.round(result.alternatives[result.alternatives.length - 1].timestamps[0][2], 3)
5960
}
6061
events.emit('data', event)
62+
eventHistory.push(event)
6163
}
6264
}
6365
})
6466
recognizeStream.on('error', (err) => {
65-
events.emit('data', {
67+
const event = {
6668
status: 'error',
67-
err: `${err.message}`
68-
})
69+
err: `IBM STT failed: ${err.message}`
70+
}
71+
events.emit('data', event)
72+
eventHistory.push(event)
6973
})
7074
recognizeStream.on('close', () => {
7175
events.emit('close')
@@ -87,6 +91,11 @@ class IbmSTT {
8791
recognizeStream.destroy()
8892
}
8993
recognizeStream = null
94+
},
95+
triggerHistoryEmit: () => {
96+
for (const eh of eventHistory) {
97+
events.emit('data', eh)
98+
}
9099
}
91100
}
92101
}

frontend/src/stt/kaldi.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class KaldiSTT {
4242

4343
const ws = new WebSocket(wsUri)
4444
const events = new EventEmitter()
45+
const eventHistory = []
4546

4647
ws.on('open', () => {
4748
ws.on('message', (data) => {
@@ -60,16 +61,19 @@ class KaldiSTT {
6061
event.end = _.round(_.toNumber(dj['total-length']), 3)
6162
}
6263
events.emit('data', event)
64+
eventHistory.push(event)
6365
}
6466
} catch (err) {
6567
debug(`received non JSON content on stream, ignoring. ${err.message}`)
6668
}
6769
})
6870
ws.on('error', (err) => {
69-
events.emit('data', {
71+
const event = {
7072
status: 'error',
71-
err: `${err.message}`
72-
})
73+
err: `Kaldi STT failed: ${err.message}`
74+
}
75+
events.emit('data', event)
76+
eventHistory.push(event)
7377
})
7478
ws.on('close', () => {
7579
events.emit('close')
@@ -91,6 +95,11 @@ class KaldiSTT {
9195
if (ws) {
9296
ws.close()
9397
}
98+
},
99+
triggerHistoryEmit: () => {
100+
for (const eh of eventHistory) {
101+
events.emit('data', eh)
102+
}
94103
}
95104
})
96105
})

0 commit comments

Comments
 (0)