国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Speech | 語音處理,分割一段音頻(python)

這篇具有很好參考價值的文章主要介紹了Speech | 語音處理,分割一段音頻(python)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

本文主要是關(guān)于語音數(shù)據(jù)在處理過程中的一些腳本文件以及實(shí)例,所有代碼只需要更改所需處理的文件路徑,輸出路徑等,全部可運(yùn)行。

目錄

所需環(huán)境

方法1:將一整段音頻按時間批量切成一個一個音頻

方法2:將一整段音頻按語句停頓批量切成一個一個音頻

方法3:將一個文件夾內(nèi)的幾整段音頻批量切成一個一個音頻

3.1.數(shù)據(jù)格式:一個文件夾下的長幾分多的音頻(wav文件)按固定秒數(shù)切割

3.2.數(shù)據(jù)格式:一個文件夾下的長幾分多的音頻(mp3文件)按固定秒數(shù)切割

3.3.數(shù)據(jù)格式:一個文件夾下的長幾分多的音頻(wav文件)按語句停頓切割

擴(kuò)展

將pcm文件批量處理成wav文件

Linux下查詢文件夾中文件數(shù)量的方法

使用ls命令和wc命令

WAV格式文件詳解


所需環(huán)境

本文環(huán)境:Linux

pydub(安裝:pip3 install pydub)

ffmpeg(apt install ffmpeg)

方法1:將一整段音頻按時間批量切成一個一個音頻

數(shù)據(jù)格式:一個長三分五十秒的音頻

python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

# split_wav_time.py
from pydub import AudioSegment
from pydub.utils import make_chunks

audio = AudioSegment.from_file("his_one/1.wav", "wav")

#size = 10000  #切割的毫秒數(shù) 10s=10000
size = 60000  #切割的毫秒數(shù) 60s=60000

chunks = make_chunks(audio, size)  #將文件切割為60s一個

for i, chunk in enumerate(chunks):
    chunk_name = "new-{0}.wav".format(i)
    print(chunk_name)
    chunk.export(chunk_name, format="wav")

運(yùn)行命令:

python split_wav_time.py

?結(jié)果:

python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

方法2:將一整段音頻按語句停頓批量切成一個一個音頻

數(shù)據(jù)格式:一個長幾分多的音頻

python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

利用split_on_silence(sound,min_silence_len, ? silence_thresh, ? ?keep_silence=400)函數(shù)

第一個參數(shù)為待分割音頻,第二個為多少秒“沒聲”代表沉默,第三個為分貝小于多少dBFS時代表沉默,第四個為為截出的每個音頻添加多少ms無聲

from pydub import AudioSegment
from pydub.silence import split_on_silence
 
sound = AudioSegment.from_mp3("his_one/1.wav")
loudness = sound.dBFS
#print(loudness)
 
chunks = split_on_silence(sound,
    # must be silent for at least half a second,沉默半秒
    min_silence_len=430,
 
    # consider it silent if quieter than -16 dBFS
    silence_thresh=-45,
    keep_silence=400
 
)
print('Len:', len(chunks))
 
# 放棄長度小于2秒的錄音片段
for i in list(range(len(chunks)))[::-1]:
    if len(chunks[i]) <= 2000 or len(chunks[i]) >= 10000:
        chunks.pop(i)
print('取有效分段(大于2s小于10s):', len(chunks))
 
'''
for x in range(0,int(len(sound)/1000)):
    print(x,sound[x*1000:(x+1)*1000].max_dBFS)
'''
 
for i, chunk in enumerate(chunks):
    chunk.export("cutwav_{0}.wav".format(i), format="wav")
    #print(i)

??結(jié)果:

python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

方法3:將一個文件夾內(nèi)的幾整段音頻批量切成一個一個音頻

3.1.數(shù)據(jù)格式:一個文件夾下的長幾分多的音頻(wav文件)按固定秒數(shù)切割

python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

from pydub import AudioSegment
from pydub.utils import make_chunks
import os, re

# # 循環(huán)目錄下所有文件
for each in os.listdir("/workspace/tts/PolyLangVITS/history"): #循環(huán)目錄
    
    filename = re.findall(r"(.*?)\.wav", each) # 取出.wav后綴的文件名
    print(each)
    if each:
        # filename[0] += '.wav'
        # print(filename[0])

        mp3 = AudioSegment.from_file('/workspace/tts/PolyLangVITS/history/{}'.format(each), "wav") # 打開mp3文件
#         # # mp3[17*1000+500:].export(filename[0], format="mp3") #
        size = 15000  # 切割的毫秒數(shù) 10s=10000

        chunks = make_chunks(mp3, size)  # 將文件切割為15s一塊

        for i, chunk in enumerate(chunks):

            chunk_name = "{}-{}.wav".format(each.split(".")[0],i)
            print(chunk_name)
            chunk.export('/workspace/tts/PolyLangVITS/preprodata/his_out/{}'.format(chunk_name), format="wav")



 

?結(jié)果

python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

3.2.數(shù)據(jù)格式:一個文件夾下的長幾分多的音頻(mp3文件)按固定秒數(shù)切割

from pydub import AudioSegment
from pydub.utils import make_chunks
import os, re
# #
# # 循環(huán)目錄下所有文件
for each in os.listdir("D:/純音樂"): #循環(huán)目錄
    
    filename = re.findall(r"(.*?)\.mp3", each) # 取出.mp3后綴的文件名
    print(each)
    if each:
        # filename[0] += '.wav'
        # print(filename[0])

        mp3 = AudioSegment.from_file('D:/純音樂/{}'.format(each), "mp3") # 打開mp3文件
#         # # mp3[17*1000+500:].export(filename[0], format="mp3") #
        size = 15000  # 切割的毫秒數(shù) 10s=10000

        chunks = make_chunks(mp3, size)  # 將文件切割為15s一塊

        for i, chunk in enumerate(chunks):

            chunk_name = "{}-{}.mp3".format(each.split(".")[0],i)
            print(chunk_name)
            chunk.export('D:/純音樂分解/{}'.format(chunk_name), format="mp3")```



 

?3.3.數(shù)據(jù)格式:一個文件夾下的長幾分多的音頻(wav文件)按語句停頓切割

?python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

# @ Elena
# @ Date : 23.9.4


import os, re
from pydub import AudioSegment
from pydub.silence import split_on_silence

# # 循環(huán)目錄下所有文件
for each in os.listdir("/workspace/tts/PolyLangVITS/history"): 
    filename = re.findall(r"(.*?)\.wav", each) # 取出.wav后綴的文件名
    print(each)
    if each:
        sound = AudioSegment.from_file('/workspace/tts/PolyLangVITS/history/{}'.format(each), "wav")
        loudness = sound.dBFS
    #print(loudness)
 
    chunks = split_on_silence(sound,
        # must be silent for at least half a second,沉默半秒
        min_silence_len=430,
    
        # consider it silent if quieter than -16 dBFS
        silence_thresh=-45,
        keep_silence=400
    
    )
    print('Len:', len(chunks))
    
    # 放棄長度小于1秒的錄音片段
    for i in list(range(len(chunks)))[::-1]:
        if len(chunks[i]) <= 1000 or len(chunks[i]) >= 10000:
            chunks.pop(i)
    print('Len (1s~10s wav file):', len(chunks))
    
    '''
    for x in range(0,int(len(sound)/1000)):
        print(x,sound[x*1000:(x+1)*1000].max_dBFS)
    '''
    
    for i, chunk in enumerate(chunks):
        chunk_name = "{}-{}.wav".format(each.split(".")[0],i) 
        chunk.export("/workspace/tts/PolyLangVITS/preprodata/his_out/{}".format(chunk_name), format="wav")
        #print(i)

結(jié)果

python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

使用 file 查詢? wav

(WAV文件格式是Microsoft的RIFF規(guī)范的一個子集,用于存儲多媒體文件。WAV(RIFF)文件由若干個Chunk組成,分別為: RIFF WAVE Chunk,F(xiàn)ormat Chunk,F(xiàn)act Chunk(可選),Data Chunk。具體格式如下:)

python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

擴(kuò)展

將pcm文件批量處理成wav文件

import wave
import os
 
filepath = "data/"  # 添加路徑
filename = os.listdir(filepath)  # 得到文件夾下的所有文件名稱
#f = wave.open(filepath + filename[1], 'rb')
#print(filename)
for i in range(len(filename)):
    with open("data/"+failename[i], 'rb') as pcmfile:
        pcmdata = pcmfile.read()
    with wave.open("data/"+filename[i][:-3] + '.wav', 'wb') as wavfile:
        wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE'))
        wavfile.writeframes(pcmdata)

Linux下查詢文件夾中文件數(shù)量的方法

使用ls命令和wc命令

使用ls命令的-l選項(xiàng)和管道操作符|結(jié)合wc命令來統(tǒng)計(jì)文件數(shù)量:

查詢當(dāng)前文件夾下帶有“wav”的文件數(shù)量

ls -l | grep "wav" | wc -l

?python 音頻分割,- Speech -,# - Python,音視頻,python,開發(fā)語言,音頻處理,1024程序員節(jié)

WAV格式文件詳解

WAV文件格式是Microsoft的RIFF規(guī)范的一個子集,用于存儲多媒體文件。WAV(RIFF)文件由若干個Chunk組成,分別為: RIFF WAVE Chunk,F(xiàn)ormat Chunk,F(xiàn)act Chunk(可選),Data Chunk。具體格式如下:

音頻文件參數(shù)簡介
對于形如44100HZ 16bit stereo 或者 22050HZ 8bit mono參數(shù)描述的音頻文件,其蘊(yùn)含的文件參數(shù)包括:

采樣率:聲音信號在“?!鷶?shù)”轉(zhuǎn)換過程中單位時間內(nèi)采樣的次數(shù)。
采樣值(采樣精度):每一次采樣周期內(nèi)聲音模擬信號的積分值。
同時,每個采樣數(shù)據(jù)記錄的是振幅, 而采樣精度取決于儲存空間的大小。
對于單聲道(mono)文件,采樣數(shù)據(jù)為8位的短整數(shù),同時其采樣精度有:

1 字節(jié)(8bit) 只能記錄 256 個數(shù), 也就是只能將振幅劃分成 256 個等級;
2 字節(jié)(16bit) 可以細(xì)到 65536 個數(shù), 即為 CD 標(biāo)準(zhǔn);
4 字節(jié)(32bit) 能把振幅細(xì)分到 4294967296 個等級, 實(shí)在是沒必要了。
對于雙聲道立體聲(stereo)文件,每次采樣數(shù)據(jù)為一個16位的整數(shù)(int),且采樣是雙份的,也為單聲道文件的兩倍。采樣數(shù)據(jù)中高八位(左聲道)和低八位(右聲道)分別代表兩個聲道。

由于wav格式文件本質(zhì)上為音頻文件,即可根據(jù)文件的大小、采樣頻率和采樣大小估算文件的播放長度。
更多可查看Microsoft WAVE soundfile format (sapp.org)文章來源地址http://www.zghlxwxcb.cn/news/detail-715669.html

到了這里,關(guān)于Speech | 語音處理,分割一段音頻(python)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python加上ffmpeg實(shí)現(xiàn)音頻分割

    python加上ffmpeg實(shí)現(xiàn)音頻分割

    前言: 這是一個系列的文章,主要是使用python加上ffmpeg來對音視頻文件進(jìn)行處理,包括音頻播放、音頻格式轉(zhuǎn)換、音頻文件分割、視頻播放等。 系列文章鏈接: 鏈接1: python使用ffmpeg來制作音頻格式轉(zhuǎn)換工具(優(yōu)化版) 鏈接2:<Python>PyQt5+ffmpeg,簡單視頻播放器的編寫(解

    2024年02月04日
    瀏覽(22)
  • (Python) 在Python中對WAV音頻文件進(jìn)行分割與拼接

    在本文中,我們將介紹如何使用Python來處理音頻文件,主要集中在wav文件的分割和拼接方面。 1. 分割WAV文件 對于音頻處理來說,分割文件是一項(xiàng)基本任務(wù)。在Python中,我們可以使用wave模塊來讀取.wav文件,并使用SciPy中的signal模塊來進(jìn)行分割。 1.1. 讀取WAV文件 使用wave.open()函

    2024年02月21日
    瀏覽(19)
  • [語音識別] 基于Python構(gòu)建簡易的音頻錄制與語音識別應(yīng)用

    [語音識別] 基于Python構(gòu)建簡易的音頻錄制與語音識別應(yīng)用

    語音識別技術(shù)的快速發(fā)展為實(shí)現(xiàn)更多智能化應(yīng)用提供了無限可能。本文旨在介紹一個基于Python實(shí)現(xiàn)的簡易音頻錄制與語音識別應(yīng)用。文章簡要介紹相關(guān)技術(shù)的應(yīng)用,重點(diǎn)放在音頻錄制方面,而語音識別則關(guān)注于調(diào)用相關(guān)的語音識別庫。本文將首先概述一些音頻基礎(chǔ)概念,然后

    2024年02月12日
    瀏覽(24)
  • 語音識別系列︱用python進(jìn)行音頻解析(一)

    筆者最近在挑選開源的語音識別模型,首要測試的是百度的paddlepaddle; 測試之前,肯定需要了解一下音頻解析的一些基本技術(shù)點(diǎn),于是有此篇先導(dǎo)文章。 筆者看到的音頻解析主要有幾個: soundfile ffmpy librosa 安裝代碼: 參考文檔:librosa 文檔位置:https://librosa.org/doc/latest/co

    2024年02月02日
    瀏覽(20)
  • 使用Python進(jìn)行語音識別:將音頻轉(zhuǎn)為文字

    語音識別是一項(xiàng)將語音信號轉(zhuǎn)換為可理解的文本的技術(shù)。在Python中,我們可以使用一些庫和工具來實(shí)現(xiàn)語音識別,并將音頻轉(zhuǎn)換為文本。本文將介紹如何使用Python進(jìn)行語音識別的過程,并提供相應(yīng)的源代碼。 步驟1:安裝所需的庫 首先,我們需要安裝一些Python庫來支持語音識

    2024年02月03日
    瀏覽(90)
  • 當(dāng)音樂遇上Python:用Pydub自動分割音頻

    當(dāng)音樂遇上Python:用Pydub自動分割音頻

    ?? ?? ?? 當(dāng)音樂遇上Python:用Pydub自動分割音頻 隨著短視頻應(yīng)用的普及,越來越多人開始了解并嘗試制作自己的短視頻作品。而在制作短視頻時,背景音樂的選擇和使用也是非常重要的一步。很多人喜歡選擇一首長音樂,再通過剪輯軟件將其剪成多段來使用,這種做法雖然

    2024年02月02日
    瀏覽(14)
  • Python的音視頻文件處理

    Python的音視頻文件處理

    ffmpeg-python 是 ffmpeg 的一個包裝,通過 python 調(diào)用 ffmpeg 的 API ,實(shí)現(xiàn)高效的音視頻文件處理 開始之前 安裝 ffmpeg 安裝 ffmpeg-python 參考 ffmpeg官方網(wǎng)站 ffmpeg-python的代碼庫與技術(shù)文檔 技術(shù)背景 音視頻文件處理流程 輸入文件 ? 解封裝 已編碼的數(shù)據(jù)包 ? 解碼 被編碼的幀 ( 可進(jìn)行

    2024年02月03日
    瀏覽(27)
  • Android音視頻處理技術(shù):音頻混音與播放

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 在現(xiàn)代生活中,我們都會聽到各種各樣的聲音。但是有的聲音會相互抵消影響我們的正常生活,而有的聲音則會增加我們的情緒快樂。人類為了能夠真正體驗(yàn)到聲音帶來的快感,需要將不同類型的聲音合并,再將它們再傳達(dá)給大腦。音頻混音與

    2024年02月08日
    瀏覽(19)
  • pydub,一個有趣的 Python 音視頻處理庫!

    pydub,一個有趣的 Python 音視頻處理庫!

    前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站零基礎(chǔ)入門的AI學(xué)習(xí)網(wǎng)站~。?? 目錄 ?編輯 前言 什么是 pydub? 安裝 pydub 基本用法 ?1. 播放音頻文件 ?2. 剪切音頻文件 高級用法 ?1. 合并音頻文件 ?2. 調(diào)整音量 實(shí)際

    2024年02月21日
    瀏覽(18)
  • python+moviepy音視頻處理(一):基本操作

    python+moviepy音視頻處理(一):基本操作

    目錄 視頻處理 視頻加載和輸出 視頻轉(zhuǎn)換gif 視頻裁剪 視頻音量調(diào)節(jié) 去掉視頻聲音 視頻中的音頻提取與替換 獲取視頻屬性 倍數(shù)播放視頻 截取視頻某幀為封面 多視頻拼接 音頻處理 替換視頻文件的音頻 多個音頻文件拼接 安裝:pip install moviepy 中文官網(wǎng):moviepy-cn 文檔 \\\'\\\'\\\' movie

    2023年04月23日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包