我有很多讲座视频内容想要配上字幕。YouTube 会在某些条件下自动为视频生成字幕(这些条件对我来说仍然有点神秘)。
我希望能够在 YouTube 之外使用这项语音识别技术。我不想为了获得成绩单而上传每个视频(太耗时),另外,我认为 YouTube 不会对超过 30 分钟的视频这样做(大多数视频都是这样),此外,我认为它不会对非公开列出的视频这样做(这是一个问题,因为它是优质内容,旨在出售)。
完美场景:我可以从我的桌面运行一个程序来从这些视频中获取成绩单,它的质量与 YouTube 的质量相同或更好,并且具有类似于 SRT 或 YouTube 生成的 XML 的时间码 [如何获取 YouTube 字幕]。
可接受的情况:我可以使用一些技巧来强制 YouTube 转录视频,无论设置为私人还是公开,也无论长度如何。
可行的方案:有一个库或某个东西我可以用来编写自己的程序。我擅长使用 C#,也熟悉 C++(但我更喜欢 C#)。
答案1
谷歌实施了网络语音 API(用于语音识别和合成)放入 Chrome,如果您是开发人员,可以使用它。YouTube 就是用它来为一些视频生成隐藏式字幕。也许您会找到与之交互的代码。
数据流可能是:
视频文件 => 提取并转换音频 => 将其发送到 Google API => 获取文本 => 写入 SRT。
编辑:除了 W3C 规范之外,似乎没有官方 API 页面。因此这里有更多链接:
- http://www.sitepoint.com/experimenting-web-speech-api/
- http://www.smashingmagazine.com/2014/12/05/enhancing-ux-with-the-web-speech-api/
这些示例是关于在 Chrome 内部使用 API,但您可以直接查询 Google 的在线语音识别引擎。例如,碧玉是一款适用于 Raspberry Pi 的语音识别个人助理,可让您选择谷歌作为语音识别引擎。
答案2
有一个名为“autosub”的工具(请参阅 github 上的 agermanidis/autosub)可以做到这一点,尽管它使用的是较旧的 Google 语音 API。该工具使用 ffmpeg 将音频剥离为 FLAC 文件,然后将 FLAC 文件发送给 Google 进行转录。它会生成 SRT 或 VTT 文件。
准确率较低,部分原因是 Google API 较旧。有一个较新的 API(“Cloud Speech REST API”,网址为https://cloud.google.com/speech/docs/apis)。这个 API 非常简单,在某些时候,我打算 fork autosub 来使用它。
另一种方法是上传到 YouTube,并在字幕制作完成后下载 VTT 文件。这种方法的麻烦之处在于 YouTube 生成的字幕非常精细(例如几个单词),而不是一个句子。这使得在手动扫描时检查字幕变得更加困难。
答案3
最简单的方法是:转到 Google 文档,打开一个新文本文档并从工具中选择“语音输入”,然后播放录音。是的。就是这么简单!(并支持多种语言)
否则,您可以使用带有 HTML5 的本地网页,如下所示: https://www.labnol.org/software/add-speech-recognition-to-website/19989/