指定 Whisper 输出为简体中文

Whisper是OpenAI推出的一种开源语音识别模型,能够自动识别多种语言,将音频转换文字。Whisper由python实现,同时拥有丰富的社区支持。除了原始的Whisper之外,还有一些相关的项目,有移植到 C/C++的whisper.cpp和能使用GPU加速的faster-whisper。如果你不懂编程或者不熟悉命令行,也有也有很多开发者开发了图形界面,比如buzzConst-me/Whisper等。

Whisper 支持直接输出srt格式的字幕文件。我最近用 Whisper 生成字幕文件,再配合ChatGPT 使用GPT-Subtrans 翻译字幕,整体效果很好。不过, Whisper有一个问题,就是Whisper 使用--language来指定语言,但无论是简体中文还是繁体中文,对应的代码都是zh。很多情况下,使用Whisper 生成字幕文件,设置参数--language zh,会生成繁体中文的字幕文件。

解决方案

在网上终于查到解决方案,分享给大家。 在 Whisper 的讨论区中,@jongwook 提出:

  1. 使用 --initial_prompt 参数,用简体中文输入 "以下是普通话的句子。" 就能生成简体中文字幕。(补充:whisper.cpp 用户可以尝试使用--prompt参数)
  2. 以此类推,用繁体中文输入 "以下是普通話的句子。" 就能得到繁体字幕。
$ whisper --language Chinese --model large audio.wav
[00:00.000 --> 00:08.000] 如果他们使用航空的方式运输货物在某些航线上可能要花几天的时间才能卸货和通关
$ whisper --language Chinese --model large audio.wav --initial_prompt "以下是普通話的句子。"  # traditional
[00:00.000 --> 00:08.000] 如果他們使用航空的方式運輸貨物,在某些航線上可能要花幾天的時間才能卸貨和通關。
$ whisper --language Chinese --model large audio.wav --initial_prompt "以下是普通话的句子。"  # simplified
[00:00.000 --> 00:08.000] 如果他们使用航空的方式运输货物,在某些航线上可能要花几天的时间才能卸货和通关。

另外,有关 --initial_prompt 参数,可在 openai的文档 查看更多。其中也提到 "有些语言可以用不同的方式书写,比如简体或繁体中文。模型可能默认不会使用你想要的转录写作风格。你可以通过使用你偏好的写作风格的提示来改善这一点。"。