日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

音频处理四:(音频的分帧)

發(fā)布時(shí)間:2025/3/12 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 音频处理四:(音频的分帧) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

程序設(shè)計(jì)四:音頻的分幀

一:需求分析

為了分析讀人數(shù)據(jù),通常進(jìn)行分幀處理。在分幀中,往往設(shè)置在相鄰兩幀之間有一部分重疊。其原因是:語音信號(hào)是時(shí)變的,在短時(shí)范圍內(nèi)特征變化較小,所以作為穩(wěn)態(tài)來處理;但超出這短時(shí)范圍語音信號(hào)就有變化了。在相鄰兩幀之間基音發(fā)生了變化,如正好是兩個(gè)音節(jié)之間, 或正好是聲母向韻母過渡,等等,這時(shí),其特征參數(shù)有可能變化較大,但為了使特征參數(shù)平滑地變化,在兩個(gè)不重疊的幀之間插一些幀來提取特征參數(shù),這就形成了相鄰幀之間有重疊部分。

將本地的采樣數(shù)據(jù).txt讀出,分幀以后保存到另一個(gè).txt文件,需要考慮單聲道和雙聲道

wavtxtframe -i yyy.txt -o zzz.txt -framelength 4 -overlap 2

二:參考知識(shí)

1.文件知識(shí)

本地.txt信息

lanTian2.txt 聲道數(shù)1 采樣率8000 量化位數(shù)2的lanTian2.mav的采樣值 BAC009S0003W0121.txt 聲道數(shù)1 采樣率16000 量化位數(shù)2的BAC009S0003W0121.wav的采樣值

2.分幀介紹

wlen為幀長(zhǎng),inc為幀移,重疊部分為overlap,overlap=wlen - inc

信號(hào)幀數(shù)為:
nf=(N?overlap)?/inc?=(N?wlen)/inc+1n f=(N-\text { overlap) } / \text { inc }=(N-w l e n) / i n c+1 nf=(N??overlap)?/?inc?=(N?wlen)/inc+1

nf = int(np.ceil((1.0 * signal_length - wlen + inc) / inc))

np.ceil向上取整,所以會(huì)導(dǎo)致實(shí)際分幀后的長(zhǎng)度大于信號(hào)本身的長(zhǎng)度,所以要對(duì)原來的信號(hào)進(jìn)行補(bǔ)零,類似與FFT變換中的數(shù)據(jù)點(diǎn)不夠補(bǔ)零達(dá)到采樣點(diǎn)的數(shù)量。

pad_length = int((nf - 1) * inc + wlen) # 所有幀加起來總的鋪平后的長(zhǎng)度 zeros = np.zeros((pad_length - signal_length,)) # 不夠的長(zhǎng)度使用0填補(bǔ),類似于FFT中的擴(kuò)充數(shù)組操作#np.concatenate()連接兩個(gè)維度相同的矩陣 pad_signal = np.concatenate((signal, zeros)) # 填補(bǔ)后的信號(hào)記為pad_signal

三:python代碼

holiday04.py import wave import numpy as np import sys import getoptdef enframe(signal, wlen, inc):'''參數(shù)含義:signal:原始音頻型號(hào)nw:每一幀的長(zhǎng)度inc:相鄰幀的間隔'''signal_length = len(signal) # 信號(hào)總長(zhǎng)度if signal_length <= wlen: # 若信號(hào)長(zhǎng)度小于一個(gè)幀的長(zhǎng)度,則幀數(shù)定義為1nf = 1else: # 否則,計(jì)算幀數(shù)nf = int(np.ceil((1.0 * signal_length - wlen + inc) / inc))#np.ceil計(jì)算大于等于改值的最小整數(shù),將小數(shù)點(diǎn)后部分刪除pad_length = int((nf - 1) * inc + wlen) # 所有幀加起來總的鋪平后的長(zhǎng)度zeros = np.zeros((pad_length - signal_length,)) # 不夠的長(zhǎng)度使用0填補(bǔ),類似于FFT中的擴(kuò)充數(shù)組操作#np.concatenate()連接兩個(gè)維度相同的矩陣pad_signal = np.concatenate((signal, zeros)) # 填補(bǔ)后的信號(hào)記為pad_signalindices = np.tile(np.arange(0, wlen), (nf, 1)) + np.tile(np.arange(0, nf * inc, inc), (wlen, 1)).T# 相當(dāng)于對(duì)所有幀的時(shí)間點(diǎn)進(jìn)行抽取,得到nf*nw長(zhǎng)度的矩陣#tile() 函數(shù),就是將原矩陣橫向、縱向地復(fù)制展開indices = np.array(indices, dtype=np.int32) # 將indices轉(zhuǎn)化為矩陣frames = pad_signal[indices] # 得到幀信號(hào)return frames#返回幀信號(hào)矩陣def main(argv):try:#opts, args = getopt.getopt(argv, "-h-i:-f:-o:", ["help", "input=", "framelength", "overlap"])opts, args = getopt.getopt(argv, "-h-i:-o:-f:-l:", ["help", "input=", "output=","framelength=","overlap="])except getopt.GetoptError:print('Error: python holiday04.py -i BAC009S0003W0121.txt -o frame02.txt --framelength 200 --overlap 100')print(' or: python holiday04.py -i BAC009S0003W0121.txt -o frame01.txt -f 200 -l 100')sys.exit(2)# 處理 返回值options是以元組為元素的列表。for opt, arg in opts:if opt in ("-h", "--help"):print("為真實(shí)還原,輸入的參數(shù)盡量和原語音一致")print('python holiday04.py -i BAC009S0003W0121.txt -o frame02.txt --framelength 200 --overlap 100')print('or: python holiday04.py -i BAC009S0003W0121.txt -o frame01.txt -f 200 -l 100')sys.exit()elif opt in ("-i", "--input"):input = argelif opt in ("-o", "--output"):output = argelif opt in ("-f", "--framelength"):framelength = int(arg)print(framelength)elif opt in ("-l", "--overlap"):overlap = int(arg)f = open(input)# f = open("wavData(left).txt")# f = open("lanTian2.txt")# wavData(left)line = f.readline()data_list = []while line:# 把切分出的列表的每個(gè)值, 把它們轉(zhuǎn)成np.short型, 并返回迭代器num = list(map(np.short, line.split())) # np.short# 用list函數(shù)把map函數(shù)返回的迭代器遍歷展開成一個(gè)列表data_list.append(num)line = f.readline()f.close()wave_data = np.array(data_list)signal = wave_data.TFrame = enframe(signal[0], framelength, overlap) # signal[0]是為了保證維度一致file = open(output, 'w+')np.savetxt(file,Frame, fmt='%d', delimiter=' ')file.close()if __name__ == "__main__":# sys.argv[1:]為要處理的參數(shù)列表,sys.argv[0]為腳本名,所以用sys.argv[1:]過濾掉腳本名。main(sys.argv[1:])#python holiday04.py -i BAC009S0003W0121.txt -o frame02.txt --framelength 200 --overlap 100 #python holiday04.py -i BAC009S0003W0121.txt -o frame01.txt -f 200 -l 100 #python holiday04.py -i lanTian2.txt -o frame01.txt -f 200 -l 100

四:實(shí)現(xiàn)結(jié)果

1.請(qǐng)求幫助

python holiday04.py -h

2.單參數(shù)分幀

  • -i 輸入采樣值點(diǎn)的文件
  • -o 保存的文件
  • -f 幀長(zhǎng)
  • -l 幀移
python holiday04.py -i BAC009S0003W0121.txt -o frame01.txt -f 200 -l 100

3.多參數(shù)分幀

  • -i 輸入采樣值點(diǎn)的文件
  • -o 保存的文件
  • –framelength 幀長(zhǎng)
  • –overlap 幀移
python holiday04.py -i BAC009S0003W0121.txt -o frame02.txt --framelength 200 --overlap 100

五:結(jié)果分析

以BAC009S0003W0121.txt的內(nèi)容用本程序?qū)⒔Y(jié)果保存,再用matlab直接讀取原語音BAC009S0003W0121.wav進(jìn)行對(duì)比,結(jié)果為一致

1.matlab對(duì)比程序

程序4對(duì)比.m

%實(shí)驗(yàn)要求一:語音分幀顯示 clc clear all close all[x,Fs]=audioread('G:\python\holiday\BAC009S0003W0121.wav','native'); % 讀入數(shù)據(jù)文件 wlen=200; inc=100; % 給出幀長(zhǎng)和幀移 N=length(x); % 信號(hào)長(zhǎng)度 time=(0:N-1)/Fs; % 計(jì)算出信號(hào)的時(shí)間刻度 signal=enframe(x,wlen,inc)'; % 分幀 signal=signal';

2.顯示結(jié)果

2.1 matlab結(jié)果

2.2 python生成的frame01.txt

總結(jié)

以上是生活随笔為你收集整理的音频处理四:(音频的分帧)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久精品视频在线观看 | 久色国产 | 亚洲一区二三区 | 中国字幕一色哟哟 | 亚洲风情亚aⅴ在线发布 | 综合久久久久综合 | 精品无码人妻一区二区三 | 国产精品高清无码 | 影音先锋人妻啪啪av资源网站 | 刘亦菲一区二区三区免费看 | 欧美久久久久久久久久久久久久 | 奇米视频在线 | 在线观看aa | 亚洲欧美另类国产 | 波多野结衣一本一道 | 欧美激情爱爱 | 五月婷婷俺也去 | 欧美一区二区高清 | 欧美综合视频在线观看 | 后进极品白嫩翘臀在线视频 | 久久韩日 | 精品69| 国产伦精品一区二区三区网站 | 韩国美女毛片 | 最新在线黄色网址 | 观看毛片| 操你妹影院| 免费观看毛片网站 | 欧美亚洲日本一区 | 国产黄色一级片视频 | 亚洲AV蜜桃永久无码精品性色 | 午夜激情av | 一级看片| 亚洲精品久久久久久宅男 | 成人影片网址 | 国产农村妇女精品久久久 | 免费成人深夜夜行网站视频 | 久久激情视频 | 亚洲成人无码久久 | 狠狠天天 | 国产婷婷一区二区三区久久 | 华人永久免费 | 中文字幕25页 | 熟妇的味道hd中文字幕 | 国产xxxx在线观看 | 91天堂素人 | 奶水喷溅 在线播放 | 男人天堂综合 | 激情视频激情小说 | 国产中文在线视频 | 中文字幕欧美专区 | 人人干人人模 | 欧美不卡二区 | 国产伦理片在线观看 | 国产女主播在线观看 | 女裸全身无奶罩内裤内衣内裤 | 无码免费一区二区三区免费播放 | 亚洲av中文无码乱人伦在线视色 | 国产露出视频 | 一级黄毛片 | 国内自拍区 | 最近中文字幕在线中文高清版 | 性色一区二区 | 日韩视频在线观看视频 | www.色在线观看 | 欧洲精品在线观看 | 爱视频福利网 | 丰满人妻综合一区二区三区 | 香蕉久久精品日日躁夜夜躁 | 99热这里只有精品8 国产一卡二 | 91黄色免费网站 | 日韩欧美高清视频 | 肥臀av| 91在线视频免费观看 | 日韩高清精品免费观看 | 福利精品在线 | 国产日韩激情 | 伦理av在线 | 日韩欧美视频一区二区 | 私人午夜影院 | 一区二区三区免费观看视频 | 深夜福利一区二区三区 | www.亚洲一区 | xxxx性视频 | 国产日韩av一区二区 | www.男人的天堂 | 一道本av| 国产一区二区在线电影 | 精品少妇久久久 | 毛片一级在线观看 | 被各种性器调教到哭vk | 久久精品一区二区在线观看 | 91黑丝在线观看 | 在线观看国产精品入口男同 | 诱夫1v1高h | 秋葵视频在线 | 日本理论片午伦夜理片在线观看 | 日本高清精品 | 婷婷综合精品 |