我注意到用 openai whisper 语音到文本库 转录多种语言的语音有时可以准确识别另一种语言的插入并提供预期的输出,例如:
八十多个人 is the same as 八十几个人. So 多 and 几 are interchangeable and they can both mean several
.
然而,相同的音频输入在不同的通道(使用相同的模型,或更小/更大的模型)会间歇性地导致整个句子被翻译而不是转录的故障。 IE。片段将被翻译成音频中出现的第一或第二语言。使用上面的示例输入,要么整个句子是英文(中文部分翻译成英文),要么整个句子是中文(英文部分翻译成中文)。 重要:在这两种情况下都没有指定输入语言,也没有传递任何任务类型(这意味着默认
--task transcribe
)。
whisper的docs提到翻译成英语是唯一可用的目标语言(在命令行版本中有选项
--task translate
),但没有提到翻译成其他目标语言。然而,上述行为表明这些模型也能够翻译成其他语言。
问题是是否有一种已知的方法来配置模型以进行文本到文本的翻译?还是这种行为只是某种故障,不能被“利用”或在较低级别配置,从而允许使用模型仅在任何受支持的语言之间进行文本翻译?
根据 whisper 的问题跟踪器中的评论 这可能是一个可能的答案:
从论文来看,使用的数据集没有使用任何英语音频来润色文本样本。通过使用不同的模型将口语与文本语言相匹配来清理数据集。如果它们不匹配,则排除该样本。部分训练数据例外,以将任何口语与英语文本 (X->en) 翻译相匹配。
所以不幸的是没有直接的方法,模型没有接受过训练。对于您的用例,这可以转录成英文文本,但必须有一些外部系统才能将英文文本翻译成波兰文文本。
--language
参数在cli中定义为:
--language
language spoken in the audio, specify None
to perform language detection (default: None)
然而,尽管上面有帮助文本,但这可能具有潜在有用的未记录的副作用。
观察到的未记录故障是,如果您设置 source 语言,例如
es
但音频输入包含英语,然后输入的英语部分将翻译 为西班牙语。非英语的音频输入部分将被转录,尽管根据语言的不同,它可能并不总是有效或可能会产生垃圾翻译。
所以“利用”是模型可用于解析英语音频,然后将其翻译成支持的语言。
上述行为发生在常规转录模式(默认情况下,即
--task transcribe
),并且在 python 中的原始耳语实现以及使用相同的模型,但显然具有不同的参数。
非英语翻译的质量取决于语言,并且似乎通常比通过 huugingface 提供的专用开源模型(例如 Helsinki-NLP/opus-mt-es-en
、
facebook/m2m100_418M
、facebook/m2m100_1.2B
等)获得的质量要低).