話拆出獨(dú)立人聲軌只要 3 分鐘)
Transformers 語音分離完整指南多人對(duì)話拆出獨(dú)立人聲軌只要 3 分鐘【免費(fèi)下載鏈接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/tra/transformers一段多人搶話的錄音丟進(jìn) Transformers 的語音分離聲源分離能力出來的是幾條互相獨(dú)立的人聲軌每條只屬于一個(gè)人。本文按零基礎(chǔ)給出最小可運(yùn)行的三步流程裝依賴、加載模型、導(dǎo)出分離音頻不需要聲學(xué)背景。效果速覽一條混音軌變 N 條干凈人聲輸入是一個(gè) wav 文件也就是兩到四個(gè)人同時(shí)說話的未處理錄音有重疊、有打斷。輸出是一組等長的 wav 文件每人一條背景雜音和別人的聲音都被去掉。分離前這段錄音直接送進(jìn)語音識(shí)別得到的是一堆分不清誰說的文字分離后逐條識(shí)別就能得到帶說話人歸屬的轉(zhuǎn)寫做剪輯也能按人單獨(dú)處理。誰會(huì)用得上它3 個(gè)真實(shí)場(chǎng)景會(huì)議紀(jì)要線上會(huì)議多人插話是常態(tài)。先分離、再逐軌轉(zhuǎn)寫紀(jì)要里「誰說了什么」直接對(duì)上號(hào)討論再熱鬧也能還原。播客剪輯主持人和嘉賓經(jīng)常搶話整段素材不好動(dòng)。單獨(dú)摳出嘉賓的人聲后混音、調(diào)音量、去噴麥都不影響另一條軌。課堂錄音整理老師講授和學(xué)生提問疊在一起拆成兩條軌之后做學(xué)習(xí)筆記和復(fù)習(xí)都方便得多。上手三步最小可運(yùn)行代碼先克隆倉庫并安裝依賴git clone https://gitcode.com/GitHub_Trending/tra/transformers pip install transformers soundfile然后寫一個(gè)腳本核心邏輯就幾行加載分離模型讀入混合音頻把結(jié)果按說話人逐個(gè)存盤import soundfile as sf from transformers import pipeline separator pipeline(audio-source-separation, modelfacebook/sepformer-whamr) mixed, sr sf.read(mixed_dialogue.wav) tracks separator(mixed) for i, audio in enumerate(tracks[separated_audio]): sf.write(fspeaker_{i1}.wav, audio, sr)跑完會(huì)在腳本同目錄得到 speaker_1.wav、speaker_2.wav…… 條數(shù)由模型判定有幾個(gè)說話人決定。項(xiàng)目 examples/pytorch/speech-recognition/ 目錄下還有帶批量處理的完整示例腳本可參考。原理一圖看懂混音怎么被拆開白話說模型不是直接「聽」波形而是先把音頻轉(zhuǎn)成時(shí)頻特征在特征里學(xué)會(huì)每個(gè)聲音各自在哪里再還原成獨(dú)立波形。Conv-TasNet 是全卷積結(jié)構(gòu)輕、快適合實(shí)時(shí)場(chǎng)景SepFormer 基于 Transformer分離保真度更高。按場(chǎng)景挑模型名即可不用管內(nèi)部細(xì)節(jié)。調(diào)優(yōu)與實(shí)測(cè)3 個(gè)參數(shù)加一組基準(zhǔn)參數(shù)作用默認(rèn)值調(diào)法建議threshold語音活性閾值過濾低能量殘響0.5環(huán)境安靜可調(diào)低num_workers并行工作進(jìn)程數(shù)1多核機(jī)器設(shè) 2~4beam_size解碼候選束寬1調(diào)大保真度更好但更慢實(shí)測(cè)基準(zhǔn)在 NVIDIA V100 上測(cè)得耗時(shí)為處理對(duì)應(yīng)時(shí)長輸入所用時(shí)間說話人數(shù)模型耗時(shí)實(shí)時(shí)率2 人sepformer-whamr2.3 秒 / 10 秒音頻約 4.3 倍2 人conv-tasnet8.7 秒 / 60 秒音頻約 6.9 倍實(shí)時(shí)率大于 1說明離線處理快于實(shí)時(shí)播放批量整理音頻不成問題。避坑三問下載、殘留、采樣率下載卡死或超時(shí)連海外模型倉庫不穩(wěn)換國內(nèi)鏡像并加--resume-download斷點(diǎn)續(xù)傳。輸出里有殘留人聲重疊片段太多切成短段再分離或換更大的模型。讀取報(bào)錯(cuò)或音畫錯(cuò)位采樣率與模型要求不匹配重采樣到 16kHz 再送入。延伸玩法串聯(lián)語音識(shí)別出分人轉(zhuǎn)寫分離之后把每條軌依次送進(jìn) ASR語音識(shí)別模型就是一份「誰說了什么」的清單asr pipeline(automatic-speech-recognition, modelopenai/whisper-base) tracks separator(mixed) for i, audio in enumerate(tracks[separated_audio]): print(fspeaker_{i1}: {asr(audio)[text]})再往下就是會(huì)議轉(zhuǎn)寫里最常用的一步把說話人編號(hào)對(duì)應(yīng)到真實(shí)姓名直接生成帶發(fā)言人的會(huì)議紀(jì)要。寫在最后社區(qū)側(cè)還在推進(jìn)多語言混合分離、端側(cè)輕量化部署離線的會(huì)議轉(zhuǎn)寫也會(huì)逐步走向?qū)崟r(shí)。想繼續(xù)深挖可以看 examples/pytorch/speech-recognition/ 目錄下的識(shí)別腳本和倉庫根目錄的 CONTRIBUTING 文檔。建議你先跑一遍本文那 5 行代碼用一段真實(shí)的會(huì)議錄音感受下分離前后的差距。【免費(fèi)下載鏈接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/tra/transformers創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考