根据 YouTube API 文档,人们应该能够使用
list
端点确定 YouTube 视频中所说的语言。特别是,语言代码位于响应中:response['items'][0]['snippet']['defaultAudioLanguage']
。
这在大多数情况下都有效。但是,某些视频,例如这个,在
defaultAudioLanguage
中没有 snippet
。为什么会发生这种情况?在这种情况下如何确定视频中所说的语言?
defaultAudioLanguage
大概 指的是视频作者在 Youtube 视频详细信息部分中设置的任何内容:
所有这些字段都是可选的。
我可能会使用 whisper.cpp 来检测给定音频中的口语(下载 YouTube 视频的音频作为练习,但有一些工具可以实现这一点);一旦您手头有视频,您可以将其转换为 16khz WAV(这是 tweet.cpp
main
工具支持的唯一格式),并将 -dl
(检测到语言后退出)传递给该工具:
~/b/whisper.cpp $ ffmpeg -i myvideo.mp4 -an -ac 1 -ar 16000 myaudio.wav
~/b/whisper.cpp $ ./main -dl -m models/ggml-medium-q5_0.bin myaudio.wav
[...]
whisper_full_with_state: auto-detected language: fi (p = 0.997451)
[...]
~/b/whisper.cpp $
在我的机器上,对于一个长达一小时的视频,这需要大约 2 秒的时间。