Simple Subtitling:自動生成影視字幕工具
Simple Subtitling是什么?
Simple Subtitling 是一個能自動給影視作品生成字幕的ai工具。它用 WhisperX 技術把音頻文件變成帶時間戳和說話人 ID 的字幕文件(SRT)。然后通過說話人嵌入提取和聚類來分配說話人ID,并且在有音頻范例時可以分配確切的說話人姓名。具體來說,它先把音頻轉成文本,加上時間戳;再提取每個說話者的特征,用凝聚層次聚類(AHC)把特征分組,最后給說話人分配 ID。要是用戶提供了演員的語音樣本,它還能給說話人命名。這個工具就是為了讓字幕生成更簡單,讓影視作品更方便觀看。
Simple Subtitling功能特點
語音識別與時間戳生成:使用 WhisperX 技術,能夠逐字逐句精準識別音頻內容,并生成帶時間戳的語音文本。
說話人識別:通過提取句子級別的說話人嵌入,并應用凝聚層次聚類(AHC)對嵌入進行分組,從而分配說話人 ID。
支持多語言:支持多種語言的音頻輸入,并可生成對應的字幕。
自定義設置:用戶可以指定音頻樣本目錄,為說話人分配確切名稱。
高精度語音識別和聚類:實現高精度的語音識別和聚類,準確地將語音轉換為文字,并對不同說話人的語音進行分類,提高字幕的準確和可讀性。
Simple Subtitling安裝及使用方法
安裝步驟
創建并激活一個名為simplesub的conda環境,指定Python版本為3.11。
在該環境下安裝項目所需的Python包,通過pip install -r requirements.txt命令完成。
還需要安裝ffmpeg,具體安裝方法可參考相關文檔。
使用方法
基本用法
運行python main.py --input_file [INPUT_FILE_PATH] --output_file [OUTPUT_SRT_PATH],例如python main.py --input_file data/friends.wav --output_file result/friends.srt,這將根據輸入的音頻文件生成字幕文件。
使用音頻范例指定說話人姓名
首先按照特定結構組織--exemplar_dir目錄,每個子文件夾代表一個說話人,里面包含該說話人的音頻樣本。
然后運行python main.py --input_file [INPUT_FILE_PATH] --output_file [OUTPUT_SRT_PATH] --exemplar_dir [PATH_OF_EXEMPLARS],例如python main.py --input_file data/friends.wav --output_file result/friends_exemplars.srt --exemplars exemplars。
參數說明
input_file:輸入音頻文件的路徑。
output_file:輸出字幕文件(SRT格式)的路徑。
whisper_model_type:Whisper模型的類型,默認為'medium',可以在相關文檔中查看可選類型。
language:語言代碼(兩個字母,如英語為'en'),如果為None,Whisper會在前30秒檢測語言,默認為None。
embedding_model:說話人嵌入提取器,可選'ecapatdnn'或'wespeaker',默認為'wespeaker'。
n_cluster:如果已知說話人數量,可以指定該參數,默認為None。
distance_threshold:如果n_cluster未指定,這是AHC(凝聚層次聚類)的距離閾值,默認為0.8。
exemplar_dir:包含音頻范例的目錄路徑,默認為None。
exemplar_threshold:用于決定“未知”說話人的余弦相似度閾值,默認為0.2。
Github:https://github.com/JaesungHuh/simple-subtitling