我一直在使用 watson-speech@^0.7.5 为体育客户的流媒体视频 (HLS) 生成字幕。
此外,我已经能够训练语言模型。
我想将 recognizeElement 和我的customization_id 用于我训练过的语言模型。但是,我有两个问题:
1) 我认为 recognizeElement 已被弃用
我正在使用的库调用是
videoProps.stream = WatsonSpeechToText.recognizeElement({
element: myMediaElement,
token: videoProps.ctx.token,
muteSource: false,
autoPlay: false,
model:videoProps.ctx.currentModel,
timestamps: true,
profanity_filter: true,
inactivity_timeout: -1,
continuous: true
})
.pipe(new WatsonSpeechToText.FormatStream());
但是,我注意到 watson-speech 0.19.3 中该 API 已被删除。现在有替代方案吗?
此外,我想使用我训练过的自定义语言模型。此 API 是否会更新以包含以下调用?
element: myMediaElement,
token: videoProps.ctx.token,
muteSource: false,
autoPlay: false,
customization_id:videoProps.ctx.currentModel.replace('custom:',''),
timestamps: true,
profanity_filter: true,
inactivity_timeout: -1,
continuous: true
2) 我认为该 API 不支持customization_id。
在查看 recognize-stream.js 时,我注意到 OPENING_MESSAGE_PARAMS_ALLOWED 和 QUERY_PARAMS_ALLOWED 支持customization_id。
我肯定可以拉下源代码并进行更改,但同样,识别元素已消失。
谢谢, 亚伦。
最佳答案
我向您发送了一封电子邮件,其中包含一些其他详细信息,但我会继续将重要部分复制到此处,以防其他人有相同的问题:
我removed recognizeElement() in v0.15出于以下几个原因:
转录质量降低 - 音频经过几个额外的转换步骤,导致转录质量低于其他转录给定源的方法
输出不一致 - 由于浏览器的怪异,原始音频流在一次播放与另一次播放之间会略有不同,从而在某些情况下导致转录略有不同。这使得STT服务显得不一致。
暂停/快进/倒带的奇怪之处 - 转录是针对从扬声器中听到的音频,这意味着倒带会出现重复的单词,暂停可能会导致单词被分成两半,等。长时间的停顿或沉默也会导致转录超时。
我推荐的解决方案是使用 ffmpeg 在服务器端执行转录提取并转换音频,然后将结果重新格式化为 WebVVT format ,并将它们附加为 subtitles track在视频上。虽然工作量更大,但效果明显更好。
我已要求语音团队添加 WebVVT 作为输出格式以简化此操作,但我不知道是否/何时会发生。
更新:如果您确实想在当前版本的 SDK 中使用旧的 recognizeElement()
方法,我将其带回作为示例:https://github.com/watson-developer-cloud/speech-javascript-sdk/tree/master/examples/static/audio-video-deprecated
为了回答第二个问题,从 v0.20 开始,现在接受 customization_id
。但请注意,公共(public) STT 服务目前不支持定制。
关于node.js - Watson Nodejs Speech To Text - 训练语言模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39004133/