基于 Whisper 的说话人识别流水线
基于 OpenAI Whisper 的说话人识别流水线:精准识别每句话的说话者
https://github.com/MahmoudAshraf97/whisper-diarization
什么是这个项目?
这个仓库将 Whisper 语音识别能力与语音活动检测 (VAD) 和说话人嵌入结合起来,从而识别出 Whisper 生成的每句话的说话者。
以下是它的工作原理:
- 提取语音: 首先,从音频中提取语音信号,以提高说话人嵌入的准确性。
- 生成文字: 然后使用 Whisper 生成文本转录。
- 时间戳校准: 使用 WhisperX 校正并对齐时间戳,以帮助最大程度地减少由于时间偏移导致的识别错误。
- 语音活动检测: 将音频输入 MarbleNet 进行 VAD 和分割,排除沉默部分。
- 说话人嵌入: 使用 TitaNet 从每个片段中提取说话人嵌入,以便识别每个片段的说话者。
- 说话人关联: 将结果与 WhisperX 生成的时间戳关联起来,根据时间戳检测出每一句话的说话者。
- 标点符号重对齐: 使用标点符号模型补偿轻微的时间偏移,进一步提高准确性。
WhisperX 和 NeMo 参数:
diarize.py
和 helpers.py
文件中已编码了 WhisperX 和 NeMo 参数。我将在以后添加 CLI 参数来更改它们。
安装
FFMPEG 和 Cython 是必须的预先条件。
pip install cython or sudo apt update && sudo apt install cython3 # on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg # on Arch Linux
sudo pacman -S ffmpeg # on MacOS using Homebrew (https://brew.sh/) brew install ffmpeg
# on Windows using Chocolatey (https://chocolatey.org/) choco install ffmpeg
# on Windows using Scoop (https://scoop.sh/) scoop install ffmpeg
# on Windows using WinGet (https://github.com/microsoft/winget-cli) winget install ffmpeg
pip install -r requirements.txt
使用
python diarize.py -a AUDIO_FILE_NAME
如果您的系统有足够的 VRAM (>=10GB),可以使用 diarize_parallel.py
,它将 NeMo 与 Whisper 并行运行。这在某些情况下可能会有益,最终结果相同,因为这两个模型彼此独立。
请注意,这是一个实验性项目,可能会出现错误和问题。您的反馈非常欢迎!
- 原文作者:iamdev
- 原文链接:https://blog.iamdev.cn/post/2024/%E5%9F%BA%E4%BA%8E_Whisper_%E7%9A%84%E8%AF%B4%E8%AF%9D%E4%BA%BA%E8%AF%86%E5%88%AB%E6%B5%81%E6%B0%B4%E7%BA%BF__/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止转载 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。