最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python譜減法語音降噪實例

 更新時間:2019年12月18日 09:50:52   作者:zipaiyou  
今天小編就為大家分享一篇Python譜減法語音降噪實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

代碼中用到了nextpow2,其中n = nextpow2(x) 表示最接近x的2的n次冪。

#!/usr/bin/env python
import numpy as np
import wave
import nextpow2
import math
 
 
# 打開WAV文檔
f = wave.open("filename.wav")
# 讀取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
fs = framerate
# 讀取波形數(shù)據(jù)
str_data = f.readframes(nframes)
f.close()
# 將波形數(shù)據(jù)轉(zhuǎn)換為數(shù)組
x = np.fromstring(str_data, dtype=np.short)
# 計算參數(shù)
len_ = 20 * fs // 1000
PERC = 50
len1 = len_ * PERC // 100
len2 = len_ - len1
# 設(shè)置默認(rèn)參數(shù)
Thres = 3
Expnt = 2.0
beta = 0.002
G = 0.9
# 初始化漢明窗
win = np.hamming(len_)
# normalization gain for overlap+add with 50% overlap
winGain = len2 / sum(win)
 
 
# Noise magnitude calculations - assuming that the first 5 frames is noise/silence
nFFT = 2 * 2 ** (nextpow2.nextpow2(len_))
noise_mean = np.zeros(nFFT)
 
 
j = 0
for k in range(1, 6):
  noise_mean = noise_mean + abs(np.fft.fft(win * x[j:j + len_], nFFT))
  j = j + len_
noise_mu = noise_mean / 5
 
 
# --- allocate memory and initialize various variables
k = 1
img = 1j
x_old = np.zeros(len1)
Nframes = len(x) // len2 - 1
xfinal = np.zeros(Nframes * len2)
 
 
# =========================  Start Processing  ===============================
for n in range(0, Nframes):
  # Windowing
  insign = win * x[k-1:k + len_ - 1]
  # compute fourier transform of a frame
  spec = np.fft.fft(insign, nFFT)
  # compute the magnitude
  sig = abs(spec)
 
 
  # save the noisy phase information
  theta = np.angle(spec)
  SNRseg = 10 * np.log10(np.linalg.norm(sig, 2) ** 2 / np.linalg.norm(noise_mu, 2) ** 2)
 
 
 
 
  def berouti(SNR):
    if -5.0 <= SNR <= 20.0:
      a = 4 - SNR * 3 / 20
    else:
      if SNR < -5.0:
        a = 5
      if SNR > 20:
        a = 1
    return a
 
 
 
 
  def berouti1(SNR):
    if -5.0 <= SNR <= 20.0:
      a = 3 - SNR * 2 / 20
    else:
      if SNR < -5.0:
        a = 4
      if SNR > 20:
        a = 1
    return a
 
 
  if Expnt == 1.0: # 幅度譜
    alpha = berouti1(SNRseg)
  else: # 功率譜
    alpha = berouti(SNRseg)
  #############
  sub_speech = sig ** Expnt - alpha * noise_mu ** Expnt;
  # 當(dāng)純凈信號小于噪聲信號的功率時
  diffw = sub_speech - beta * noise_mu ** Expnt
  # beta negative components
 
 
  def find_index(x_list):
    index_list = []
    for i in range(len(x_list)):
      if x_list[i] < 0:
        index_list.append(i)
    return index_list
 
 
  z = find_index(diffw)
  if len(z) > 0:
    # 用估計出來的噪聲信號表示下限值
    sub_speech[z] = beta * noise_mu[z] ** Expnt
    # --- implement a simple VAD detector --------------
    if SNRseg < Thres: # Update noise spectrum
      noise_temp = G * noise_mu ** Expnt + (1 - G) * sig ** Expnt # 平滑處理噪聲功率譜
      noise_mu = noise_temp ** (1 / Expnt) # 新的噪聲幅度譜
    # flipud函數(shù)實現(xiàn)矩陣的上下翻轉(zhuǎn),是以矩陣的“水平中線”為對稱軸
    # 交換上下對稱元素
    sub_speech[nFFT // 2 + 1:nFFT] = np.flipud(sub_speech[1:nFFT // 2])
    x_phase = (sub_speech ** (1 / Expnt)) * (np.array([math.cos(x) for x in theta]) + img * (np.array([math.sin(x) for x in theta])))
    # take the IFFT
 
 
    xi = np.fft.ifft(x_phase).real
    # --- Overlap and add ---------------
    xfinal[k-1:k + len2 - 1] = x_old + xi[0:len1]
    x_old = xi[0 + len1:len_]
    k = k + len2
# 保存文件
wf = wave.open('outfile.wav', 'wb')
# 設(shè)置參數(shù)
wf.setparams(params)
# 設(shè)置波形文件 .tostring()將array轉(zhuǎn)換為data
wave_data = (winGain * xfinal).astype(np.short)
wf.writeframes(wave_data.tostring())
wf.close()

以上這篇Python譜減法語音降噪實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Window版下在Jupyter中編寫TensorFlow的環(huán)境搭建

    Window版下在Jupyter中編寫TensorFlow的環(huán)境搭建

    這篇文章主要介紹了Window版下在Jupyter中編寫TensorFlow的環(huán)境搭建,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python文本轉(zhuǎn)語音引擎pyttsx3的使用完全指南

    Python文本轉(zhuǎn)語音引擎pyttsx3的使用完全指南

    在開發(fā)需要語音輸出功能的應(yīng)用時,文本轉(zhuǎn)語音技術(shù)是一個非常有用的工具,Python的pyttsx3庫提供了一個簡單且離線的方式來實現(xiàn)這一功能,下面小編就來和大家介紹一下pyttsx3的具體使用吧
    2025-04-04
  • 研究Python的ORM框架中的SQLAlchemy庫的映射關(guān)系

    研究Python的ORM框架中的SQLAlchemy庫的映射關(guān)系

    這篇文章主要介紹了研究Python的ORM框架中的SQLAlchemy庫的映射關(guān)系,SQLAlchemy庫是一個常見的Python中操作數(shù)據(jù)庫的工具,需要的朋友可以參考下
    2015-04-04
  • Python pandas 的索引方式 data.loc[],data[][]示例詳解

    Python pandas 的索引方式 data.loc[],data[][]示例詳解

    這篇文章主要介紹了Python pandas 的索引方式 data.loc[], data[][]的相關(guān)資料,其中data.loc[index,column]使用.loc[ ]第一個參數(shù)是行索引,第二個參數(shù)是列索引,本文結(jié)合實例代碼講解的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Python實現(xiàn)合成多張圖片到PDF格式

    Python實現(xiàn)合成多張圖片到PDF格式

    在日常生活中,經(jīng)常會遇到需要提交身份證正反面證明資料的情況,而且這些網(wǎng)站大部分只接受pdf格式,這時候我們就需要把身份證正反面兩張圖片合成為一個pdf文件。本文將為大家提供用Python實現(xiàn)這一要求的方法,需要的可以參考一下
    2022-02-02
  • 如何基于python實現(xiàn)年會抽獎工具

    如何基于python實現(xiàn)年會抽獎工具

    這篇文章主要介紹了如何基于python實現(xiàn)年會抽獎工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Python RabbitMQ消息隊列實現(xiàn)rpc

    Python RabbitMQ消息隊列實現(xiàn)rpc

    這篇文章主要介紹了python 之rabbitmq實現(xiàn)rpc,主要實現(xiàn)客戶端通過發(fā)送命令來調(diào)用服務(wù)端的某些服務(wù),服務(wù)端把結(jié)果再返回給客戶端,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python數(shù)據(jù)結(jié)構(gòu)之哈夫曼樹定義與使用方法示例

    Python數(shù)據(jù)結(jié)構(gòu)之哈夫曼樹定義與使用方法示例

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之哈夫曼樹定義與使用方法,結(jié)合具體實例形式分析了Python哈夫曼樹的原理、定義及簡單使用方法,需要的朋友可以參考下
    2018-04-04
  • 使用wxPython實現(xiàn)逐行加載HTML內(nèi)容并實時顯示效果

    使用wxPython實現(xiàn)逐行加載HTML內(nèi)容并實時顯示效果

    這篇博客中,我們將詳細(xì)分析如何使用 wxPython 構(gòu)建一個簡單的桌面應(yīng)用程序,用于逐行加載并顯示 HTML 文件的內(nèi)容,并在加載完成后通過瀏覽器組件呈現(xiàn)最終頁面,通過該應(yīng)用,我們可以體驗到逐行加載 HTML 內(nèi)容的視覺效果,類似于模擬代碼輸入,需要的朋友可以參考下
    2024-11-11
  • TensorFlow卷積神經(jīng)網(wǎng)絡(luò)MNIST數(shù)據(jù)集實現(xiàn)示例

    TensorFlow卷積神經(jīng)網(wǎng)絡(luò)MNIST數(shù)據(jù)集實現(xiàn)示例

    這篇文章主要介紹了TensorFlow卷積神經(jīng)網(wǎng)絡(luò)MNIST數(shù)據(jù)集的實現(xiàn)示例的過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11

最新評論

裕民县| 惠州市| 新昌县| 临沧市| 武宁县| 屏南县| 天祝| 左云县| 万盛区| 城固县| 黄石市| 花垣县| 怀柔区| 黄陵县| 崇仁县| 镇宁| 灵武市| 临桂县| 宁海县| 阿克陶县| 新巴尔虎右旗| 施甸县| 怀化市| 象山县| 苗栗县| 昭苏县| 治多县| 绥滨县| 吉水县| 浙江省| 杭锦旗| 东乌珠穆沁旗| 库伦旗| 平原县| 佛冈县| 平南县| 中方县| 禹州市| 林甸县| 宜昌市| 普兰店市|