WhisperHallu
实验性代码:音频文件预处理,优化Whisper转录,消除幻听文本
参见此讨论:https://github.com/openai/whisper/discussions/679
主要算法
- 使用Facebook Demucs或Deezer Spleeter进行语音提取去除噪音。
- 使用ffmpeg去除静音并标准化音量。
- 使用Silero VAD去除噪音部分。
- 添加语音标记。
- 应用语音压缩(需要
ffmpeg
4.4版本,而Google Colab为4.2版本,需要升级,见下文)。 - 尝试转录。如果输出中存在标记,则转录成功。
- 如果没有,尝试反转标记。如果输出中存在标记,则转录成功。
- 如果仍然没有,尝试不使用标记。
处理选项和参数
- 使用Whisper V1、V2或V3(默认V2,因为V3似乎不适合音乐)。
- beam_size(默认为2)、patience、temperature。
- 仅处理输入文件的一部分(需要对时间戳值进行后处理)。
- 测试了各种时间拉伸方法(见代码内注释。需要对时间戳值进行后处理。这是一个有趣的建议,但我这边没有获得实际收益)。
- 人声重混(有无语音标准化)。
- 多次最终转录(获得多个结果,考虑到Whisper每次运行结果不稳定,无需多次进行预处理)
补充
可用于为WhisperTimeSync生成"精确转录":
https://github.com/EtienneAb3d/WhisperTimeSync
可使用NeuroSpell Dictaphone进行测试:
https://neurospell.com/
WhisperHallu和WhisperTimeSync用于在karaok-AI中提取人声和歌词:
https://github.com/EtienneAb3d/karaok-AI
ChatMate是一个完整的多功能ChatGPT自动化工具,包括生成SRT文件翻译为中文的说明(作为示例):
https://github.com/EtienneAb3d/ChatMate
Google Colab
标准Whisper:
https://colab.research.google.com/drive/1-GpXaNaGFXKX9VXl60JGVVrGO41t09KA?usp=sharing
Faster Whisper:
https://colab.research.google.com/drive/1RkvOtUTbUD5NVsRI4aKEqJO8BRo8BFIY?usp=sharing
安装
在Google Colab上将ffmpeg升级到4.4版本
! add-apt-repository -y ppa:savoury1/ffmpeg4
! apt-get -qq install -y ffmpeg
!ffmpeg -version
输出:
==========
ffmpeg version 4.4.3-0ubuntu1~20.04.sav2 Copyright (c) 2000-2022 the FFmpeg developers
[...]
Demucs(如果使用)
pip install -U demucs
Spleeter(如果使用)
pip install spleeter
标准Whisper(如果使用)
sudo apt update && sudo apt install ffmpeg
sudo apt install python3
sudo apt install python3-pip
sudo apt install virtualenv
virtualenv -p python3 ../venvWhisper
. ../venvWhisper/bin/activate
pip install -U openai-whisper
pip3 install torchaudio
Faster Whisper(如果替代Whisper使用)
sudo apt update && sudo apt install ffmpeg
sudo apt install python3
sudo apt install python3-pip
sudo apt install virtualenv
virtualenv -p python3 ../venvFasterWhisper
. ../venvFasterWhisper/bin/activate
git clone https://github.com/guillaumekln/faster-whisper.git
cd faster-whisper/
pip install -e .[conversion]
pip install -e .
cd ..
ct2-transformers-converter --model openai/whisper-medium --output_dir whisper-medium-ct2 --quantization float16
ct2-transformers-converter --model openai/whisper-large --output_dir whisper-large-ct2 --quantization float16
pip3 install torchaudio
SM4T(如果替代Whisper使用)
sudo apt update && sudo apt install ffmpeg
sudo apt install python3
sudo apt install python3-pip
sudo apt install virtualenv
virtualenv -p python3 ../venvSM4T
. ../venvSM4T/bin/activate
git clone https://github.com/facebookresearch/seamless_communication.git
cd seamless_communication/
pip install --upgrade pip
pip install .
m4t_predict "On ne fait pas d'omelette sans casser des oeufs." t2tt eng --src_lang fra
pip3 install torchaudio
代码
from transcribeHallu import loadModel
from transcribeHallu import transcribePrompt
##### 音频语言可能与输出转录的语言不同
path="/path/to/your/en/sound/file"
lngInput="en"
##### 对音乐文件激活此选项以获得最小处理
isMusic=False
##### 需要针对每种语言进行调整
##### 提示示例,请参见transcribeHallu.py getPrompt(lng:str)
lng="en"
prompt= "Whisper, Ok. "\
+"A pertinent sentence for your purpose in your language. "\
+"Ok, Whisper. Whisper, Ok. "\
+"Ok, Whisper. Whisper, Ok. "\
+"Please find here, an unlikely ordinary sentence. "\
+"This is to avoid a repetition to be deleted. "\
+"Ok, Whisper. "
##### 要使用的模型大小
modelSize="medium"
loadModel("0",modelSize=modelSize)
result = transcribePrompt(path=path, lng=lng, prompt=prompt, lngInput=lngInput,isMusic=isMusic)
此工具展示了我们的专业知识。
如果您对商业/工业AI语言项目感兴趣,请联系我们:
https://cubaix.com