利用python進行音頻數據增強

2021-01-10 不靠譜的貓

在這篇文章中,我將向您展示如何使用音頻文件進行數據增強,以便能夠在機器學習數據集中生成更多樣本。

數據增強是一種生成合成數據的方法,即通過調整原始樣本來創建新樣本。這樣我們就可獲得大量的數據。這不僅增加了數據集的大小,還提供了單個樣本的多個變體,這有助於我們的機器學習模型避免過度擬合。

我們將使用free-spoken-digit-dataset數據集(github.com/Jakobovski/free-spoken-digit-dataset/tree/master/recordings)。它是語音數字的免費音頻數據集。它包含4個人的2000段錄音(每個人每個數字讀50遍)。

本文使用到的Python庫為librosa、 IPython.display.audio 和 matplotlib。

首先導入庫

可視化原始樣本

我們將使用librosa讀取.wav文件,並使用matplotlib生成wav文件的頻譜圖。下面是可視化的Python代碼

添加噪聲

這個過程涉及到噪聲的添加,即在樣本中加入白噪聲。白噪聲是隨機樣本按一定的間隔分布,均值為0,標準差為1。

為了實現這一點,我們將使用numpy的常規方法生成上述分布,並將其添加到我們的原始樣本:

Time Shifting

我們通過sample_rate/10因子來改變波形。這將使波沿時間軸向右移動給定的因子。

為了實現這一點,我使用了numpy的roll函數來生成時移。

Time Stretching

這是在不影響音高的情況下改變聲音速度/持續時間的過程。可以使用librosa的time_stretch函數來實現。

Time_stretch函數接收波形樣本和一個用於拉伸的因子作為輸入。我發現這個因子應該是0.4,因為它與原始樣本的差異很小

Pitch Shifting

這是樂器中音高縮放的一種實現。是在不影響聲音速度的情況下更改音高的過程。

我們將再次使用librosa的pitch_shift函數。

相關焦點

  • 音頻數據增強及python實現
    博客作者:凌逆戰博客地址:https://www.cnblogs.com/LXP-Never/p/13404523.html音頻時域波形具有以下特徵:音調,響度,質量。我們在進行數據增強時,最好只做一些小改動,使得增強數據和源數據存在較小差異即可,切記不能改變原有數據的結構,不然將產生「髒數據」,通過對音頻數據進行數據增強,能有助於我們的模型避免過度擬合併變得更加通用。
  • 一文總結數據科學家常用的Python庫(下)
    機器學習可解釋性(https://www.h2o.ai/wp-content/uploads/2018/01/Machine-Learning-Interpretability-MLI_datasheet_v4-1.pdf)用於音頻處理的Python庫音頻處理或音頻分析是指從音頻信號中提取信息和含義以進行分析或分類或任何其他任務。
  • 數據工程師需要掌握的 18 個 Python 庫
    作者 | 劉早起早起責編 | 屠敏本文對Python中在數據分析中需要掌握的庫進行了整理,一起來看看吧!目錄數據獲取SeleniumScrapyBeautiful Soup數據清洗SpacyNumPyPandas數據可視化MatplotlibPyecharts數據建模Scikit-learnPyTorchTensorFlow模型檢查Lime音頻數據處理Librosa圖像數據處理OpenCV-PythonScikit-image數據通信Pymongo數據分析結果web部署FlaskDjango
  • 資料|利用Python進行數據分析
    ——Fernando Pérez 加州大學伯克利分校 研究科學家, IPython的創始人之一【內容簡介】還在苦苦尋覓用Python控制、處理、整理、分析結構化數據的完整課程?本書含有大量的實踐案例,你將學會如何利用各種Python庫(包括NumPy、pandas、matplotlib以及IPython等)高效地解決各式各樣的數據分析問題。
  • 用Python進行Web爬取數據
    以下是三種高效完成任務的熱門工具:BeautifulSoupBeautifulSoup是Python中一個了不起的解析庫,可用於從HTML和XML文檔進行Web抓取。BeautifulSoup會自動檢測編碼並優雅地處理HTML文檔,即使帶有特殊字符也是如此。我們可以瀏覽已解析的文檔並找到所需的內容,這使得從網頁中提取數據變得快捷而輕鬆。
  • 使用FastAI 和即時頻率變換進行音頻分類
    今年夏天我參加了Kaggle舉辦的Freesound General-Purpose Audio Tagging 競賽,後來我決定調整其中一些代碼,利用fastai的便利做音頻分類。本文將簡要介紹如何用Python處理音頻文件,然後給出創建頻譜圖像(spectrogram images)的一些背景知識,示範一下如何在事先不生成圖像的情況下使用預訓練圖像模型。
  • 乾貨|如何利用Python處理JSON格式的數據,建議收藏!
    本文轉載自【微信公眾號:數據分析與籃球,ID:dylanxia2019】經微信公眾號授權轉載,如需轉載與原文作者聯繫JSON數據格式在我們的日常工作中經常會接觸到,無論是做爬蟲開發還是一般的數據分析處理,本文小編就來分享一下當數據接口是JSON格式時,如何進行數據處理進行詳細的介紹
  • 數據科學的Python軟體包
    當前,我們正處於大數據時代,每秒生成大量數據。大企業正在利用這些數據來促進市場增長。使用數據科學和其他技術,我們從數據中提取信息性細節,以解決複雜的現實世界問題並建立預測模型。數據科學不是工具或技術。通過掌握市場上現有的一些工具和庫,可以培養和滋養這項技能。為什麼要將Python用於數據科學?
  • 使用Python中的線性回歸通過語音診斷帕金森氏病
    本文,我們將創建一個簡單的python機器學習算法,以便能夠通過聲音來診斷該人是否為患者。我們將使用一組(健康者和帕金森病患者)音頻文件庫,通過對音頻進行一些測量來構建我們的機器學習數據集。建立機器學習數據集後,我們將使用SciKit Learn庫訓練線性回歸模型。最後,我們將構建一個python庫,這個庫可以輕鬆集成到其他應用程式中。數據集首先,我們需要將音頻文件轉換成包含音頻測量值以及患者是否健康標誌的表格。
  • Python數據類型串講(中)
    python中的內建序列有6種:列表、元祖、字符串、Unicode字符串、xrange對象、buffer對象,其中列表和元祖是最常見的序列,應重點掌握。字符串在上一篇文章中已簡單介紹,下面將以字符串為例,對序列的通用操作進行詳講。
  • librosa-madmom:音頻和音樂分析
    讀取音頻提取特徵Log-Mel SpectrogramMFCC繪製波形圖和梅爾頻譜圖prerequisitesinstall起始點檢測 onset detection tutoriallibrosaLibrosa是一個用於音頻、音樂分析、處理的python工具包,一些常見的時頻處理、特徵提取、繪製聲音圖形等功能應有盡有,功能十分強大
  • 利用Python基礎代碼語句,實現2G時代文字小遊戲,世界如此簡單!
    曾經流量很少,響應很快,時間很慢,一天可以升幾十級,今天和小狐醬一起利用python製作一款超級簡單的文字小遊戲,一同回到2G文字遊戲時代吧!一、作為一款文字遊戲,想要吸引人眼球,那麼界面美觀就是第一步,我們先來製作一個打開遊戲的第一幕。
  • 利用python做t檢驗
    >T檢驗:使用前提:       當樣本符合正態分布或趨近於正太分布時可以使用;(根據中心極限定理,當樣本n>30時,可認為近似符合正態分布)使用用途:檢驗的總體方差未知,主要檢驗單個樣本是否和已知的總體均值相等;(python
  • python數據類型總結——列表
    python用列表或元組來幫助我們。python列表一系列元素組成一個集合,可能通過索引,對每個元素進行訪問。這種數據類型統稱為序列。在python中,字符串就是一種序列。列表遍歷這種遍歷也可以用於字符串,如下:字符串遍歷python
  • Python類庫Pillow實現圖片裁剪、縮放、效果增強等功能
    python注意事項1、 Pillow和PIL不能共存;from PIL import Image, ImageFilter# 打開圖片im = Image.open('./2023163c.jpg')# 劃分複製區域box = (50, 50, 100, 100)# 進行複製
  • python海量數據快速查詢的技巧
    對於小文件而言,這樣的操作編碼簡單,運行速度也比較滿意,但是對於大型資料庫而言,將資料庫存為字典這個動作是非常耗費時間的,而且每次運行代碼都要執行這樣的操作,導致效率大大降低。想要改善這一狀況,有以下兩種解決辦法1.
  • 利用MEMS麥克風陣列定位並識別音頻或語音信源的技術方案
    其中,音頻方向測定子系統基於麥克風陣列,運行三個不同的音頻方向估算算法;數據融合子系統負責推斷方向,自動語音識別子系統利用傳入的音頻信號增強主音源信號強度,衰減主音源周圍的其它音頻信號。最後,自動說話人確認子系統識別某些關鍵詞彙,再利用相關特徵與說話人匹配。
  • Python輸出數據print,獲取輸入數據input,基礎入門
    python的輸入和輸出一、print輸出print 默認輸出是換行的,如果要實現不換行需要在變量末尾加上 end=""如:print把內容輸出到文件二、input輸入print是輸出,input接收鍵盤的輸入input()函數,是python的內置函數,接收任意數據類型的輸入,將所有輸入的數據,定義為字符串來進行處理
  • Python基礎學習之常用六大數據類型
    剛開始學習一門程式語言,除了了解運行環境與語言類型之外,最基本還是從該語言的基本數據類型開始學起。Python六大常用數據類型: int 整數 float 浮點數 str 字符串 list 列表 tuple 元組 dict 字典講解這些先說一下python中的變量與變量名。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    總目錄 零基礎全能篇(4套課程) 實用編程技巧進價(1套課程) 數據分析與挖掘(8套課程) 辦公自動化(3套課程) 機器學習與人工智慧(7套課程) 開發實戰篇(4套課程) 量化投資(2套課程) 網絡爬蟲(6套課程) 資料庫操作(1套課程) python