我一直在使用watson-speech@^0.7.5为体育用户生成流媒体视频(HLS)的字幕。
此外,我已经能够训练语言模型。
我想将RecognElement和我的customization_id用于我训练有素的语言模型。但是,我有两个问题:
1)我认为RecognElement已被弃用
我正在使用的库调用是
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。
在查看recogn-stream.js时,我注意到OPENING_MESSAGE_PARAMS_ALLOWED和QUERY_PARAMS_ALLOWED都支持customization_id。
我可以确定下拉源并进行更改但是再次识别元素已经消失。
谢谢, 亚伦。
答案 0 :(得分:1)
我向您发送了一封电子邮件,其中包含其他一些详细信息,但我会在此处复制重要部分,以防其他人有同样的问题:
我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
。请注意,公共STT服务目前不支持自定义。