Pytorch實現嬰兒哭聲檢測和識別

Pytorch實現嬰兒哭聲檢測和識別

目錄

Pytorch實現嬰兒哭聲檢測識別

1. 項目說明

2. 數據說明

(1)嬰兒哭聲語音數據集

(2)自定義數據集

3. 模型訓練

(1)項目安裝

(2)準備Train和Test數據

(3)配置文件:?config.yaml?

(4)開始訓練

(5)可視化訓練過程

(6)一些優化建議

(7)一些運行錯誤處理方法

4. 模型測試效果

5. 項目源碼下載


1. 項目說明

嬰兒哭聲是其表達需求、不適或潛在健康問題的重要信號。在寶寶健康監護中,通過智能化的哭聲識別與分析技術,不僅可以提升育兒效率,還能為早期疾病篩查和健康預警提供關鍵依據。現代AI哭聲識別系統能夠精準檢測到寶寶的哭聲,準確率可達98%以上。即使父母外出時,也可通過手機APP接收實時警報,系統會自動分析哭聲特征并推送具體建議。更智能的系統還能聯動家庭攝像頭,讓家長遠程查看嬰兒狀態,或自動調節室內溫濕度、啟動搖籃等智能設備。這種全天候的智能監護,既減輕了育兒壓力,又能及時發現異常情況,為嬰幼兒健康保駕護航。

本項目基于深度學習Pytorch,開發一個嬰兒(寶寶、新生兒)哭聲檢測和識別的系統,可以精準檢測識別嬰兒哭聲;項目網絡模型支持CNN模型MobileNet和ResNet,也支持時延神經網絡TDNN、ECAPA-TDNN以及LSTM等常見的模型,用戶也可以自定義其他模型進行訓練和測試,語音特征支持MelSpectrogram(梅爾頻譜圖)、?Spectrogram(頻譜圖)、MFCC(Mel-Frequency Cepstral Coefficients,梅爾頻率倒譜系數)、Fbank(Filter Bank,濾波器組能量)等多種音頻特征。采用ECAPA-TDNN模型,在嬰兒哭聲語音數據集上,驗證集的準確率97.8295%,采用resnet18模型,準確率可以達到98.9147%。

關鍵詞:?嬰兒哭聲、嬰兒哭叫聲、寶寶哭叫聲、哭鬧聲、檢測識別、TDNN、MelSpectrogram梅爾頻譜

模型準確率
TDNN98.1395%
ECAPA-TDNN97.8295%
resnet1898.9147%

【尊重原創,轉載請注明出處】https://blog.csdn.net/guyuealian/article/details/149812361

2. 數據說明

(1)嬰兒哭聲語音數據集

項目數據主要來源于網上收集的嬰兒哭聲語音數據集,數據集名稱baby-cry,其中訓練集,正樣本數據(類別cry)共918個音頻樣本,主要通過手機或者監控錄制的寶寶哭叫聲,時長2秒~15秒不等,負樣本數據2202個音頻樣本(類別others),包含人說話聲,鳥叫聲、汽笛聲等非嬰兒哭叫聲。測試集共645個樣本,主要用于模型指標測試。

(2)自定義數據集

如果需要新增類別數據,或者需要自定數據集進行訓練,可以參考如下進行處理

  • 收集Train和Test數據集:要求相同類別的數據,放在同一個文件夾下;且子目錄文件夾命名為類別名稱,如
  • 如,A、B、C、D四個類別,則數據文件結構如下

dc60ec30ded6666659102c4f67dd1ee2.png?

  • 類別文件:一行一個列表:?class_name.txt?
     (最后一行,請多回車一行)
A
B
C
D
  • 修改配置文件的數據路徑:?config.yaml?
train_data: # 可添加多個數據集- 'data/dataset/train1' - 'data/dataset/train2'
test_data: 'data/dataset/test'
class_name: 'data/dataset/class_name.txt'
...
...


3. 模型訓練

(1)項目安裝

整套工程基本框架結構如下:

.
├── classifier? ? ? ? ?  # 訓練模型核心代碼
├── configs? ? ? ? ? ? ? # 訓練配置文件
├── data? ? ? ? ? ? ? ?  # 項目相關數據
├── libs? ? ? ? ? ?      # 項目依賴的相關庫
├── demo.py? ? ? ? ? ? ? # 模型推理demo
├── README.md? ? ? ? ? ? # 項目工程說明文檔
├── requirements.txt? ?  # 項目相關依賴包
└── train.py? ? ? ? ? ? ?# 訓練文件

???項目依賴python包請參考requirements.txt,使用pip安裝即可:

# python3.10
albumentations==1.4.13
Cython==3.0.11
easydict==1.13
ffmpy==0.4.0
Flask==3.0.3
flask-babel==4.0.0
flatbuffers==24.3.25
imageio==2.34.2
insightface==0.7.3
ipython==8.29.0
kaldi-native-fbank==1.20.1
librosa==0.10.2.post1
loguru==0.7.2
matplotlib==3.9.1.post1
matplotlib-inline==0.1.7
numba==0.60.0
numpy==1.26.4
onnx==1.16.2
opencv-contrib-python==4.8.1.78
opencv-python==4.8.0.76
opencv-python-headless==4.10.0.84
pandas==2.2.3
pillow==10.4.0
playsound==1.3.0
PyAudio==0.2.14
pybaseutils
pycparser==2.22
pycryptodome==3.21.0
pydantic==2.8.2
pydantic_core==2.20.1
pydub==0.25.1
Pygments==2.18.0
pypandoc==1.14
pyparsing==3.1.2
PyQt5==5.13.2
PyQt5_sip==12.15.0
PySocks==1.7.1
python-dateutil==2.9.0.post0
pytz==2024.2
PyYAML==6.0.2
scikit-image==0.24.0
scikit-learn==1.5.1
scipy==1.14.0
soundfile==0.12.1
tensorboard==2.17.0
tensorboardX==2.6.2.2
toolz==0.12.1
torchinfo==1.8.0
# torch==2.0.0+cu117
# torchaudio==2.0.1+cu117
# torchvision==0.15.1+cu117
tqdm==4.66.4
typing_extensions==4.12.2
urllib3==2.2.2
visualdl==2.5.3
xmltodict==0.13.0
yeaudio==0.0.6

?項目安裝教程請參考(初學者入門,麻煩先看完下面教程,配置好開發環境):

  • 項目開發使用教程和常見問題和解決方法
  • 視頻教程:1 手把手教你安裝CUDA和cuDNN(1)
  • 視頻教程:2 手把手教你安裝CUDA和cuDNN(2)
  • 視頻教程:3 如何用Anaconda創建pycharm環境
  • 視頻教程:4 如何在pycharm中使用Anaconda創建的python環境

(2)準備Train和Test數據

項目自帶訓練數據和測試數據,語音數據增強方式主要采用:音量增強、噪聲增強等處理方式

修改配置文件數據路徑:?config.yaml?

data_type: "folder"
# 訓練數據集,可支持多個數據集(不要出現中文路徑)
train_data:- '/home/user/dataset/baby-cry/train'
# 測試數據集(不要出現中文路徑)
test_data:- '/home/user/dataset/baby-cry/test'
# 類別文件
class_name: 'data/class_name.txt'
# 數據增強
augment_config: "configs/augmentation.yml"

(3)配置文件:?config.yaml?

  • 模型支持TDNN、EcapaTdnn、CAMPPlus以及mobilenet_v2、resnet18等模型
    等模型,用戶也可以自定義模型,進行模型訓練和測試。
  • 語音特征:支持MelSpectrogram(梅爾頻譜圖)?Spectrogram(頻譜圖)、MFCC(Mel-Frequency Cepstral Coefficients,梅爾頻率倒譜系數)、Fbank(Filter Bank,濾波器組能量)等多種音頻特征
  • 訓練參數可以通過(configs/config.yaml)配置文件進行設置
  • 損失函數支持交叉熵CrossEntropy,LabelSmooth以及FocalLoss等損失函數

?配置文件:?config.yaml?說明如下:

data_type: "folder"
# 訓練數據集,可支持多個數據集(不要出現中文路徑)
train_data:- '/home/user/dataset/baby-cry/train'
# 測試數據集(不要出現中文路徑)
test_data:- '/home/user/dataset/baby-cry/test'
# 類別文件
class_name: 'data/class_name.txt'
# 數據增強
augment_config: "configs/augmentation.yml"flag: ""
work_dir: "work_space"         # 保存輸出模型的目錄
feature_method: "Fbank"        # 語音特征:MelSpectrogram、Spectrogram、MFCC、Fbank
net_type: "TDNN"               # 骨干網絡,支持:TDNN、EcapaTdnn、CAMPPlus、LSTM
width_mult: 1.0                # 模型寬度因子
input_size: [ 256,128 ]        #  (Depth,Time,FeatureSize) or (seq_size, dim_size) or (Time,n_mfcc)
batch_size: 64                 # batch_size
lr: 0.01                       # 初始學習率
optim_type: "Adam"             # 選擇優化器,SGD,Adam
loss_type: "CrossEntropyLoss"  # 選擇損失函數:支持CrossEntropyLoss,LabelSmooth
momentum: 0.9                  # SGD momentum
num_epochs: 120                # 訓練循環次數
num_warn_up: 8                 # warn-up次數
num_workers: 8                 # 加載數據工作進程數
weight_decay: 0.0005           # weight_decay,默認5e-4
scheduler: "cosine"            # 學習率調整策略
milestones: [ 60,100 ]         # 下調學習率方式
gpu_id: [ 0 ]                  # GPU ID
log_freq: 50                   # LOG打印頻率
progress: True                 # 是否顯示進度條
pretrained: True               # 是否使用pretrained模型
finetune: False                # 是否進行finetune

(4)開始訓練

整套訓練代碼非常簡單操作,用戶只需要將相同類別的數據放在同一個目錄下,并填寫好對應的數據路徑,即可開始訓練了。

python train.py -c configs/config.yaml 

訓練完成后,在嬰兒哭聲語音數據集baby-cry上,采用TDNN模型,驗證集的準確率98.1395%,采用resnet18模型,準確率可以達到98.9147%。下表給出TDNN,ECAPA-TDNN和resnet18等常用模型驗證集的準確率:

模型準確率
TDNN98.1395%
ECAPA-TDNN97.8295%
resnet1898.9147%

(5)可視化訓練過程

訓練過程可視化工具是使用Tensorboard,使用方法,可參考這里:項目開發使用教程和常見問題和解決方法(cuda cudnn安裝教程)

Tensorboard使用方法,需要在終端輸入:

# 基本方法
tensorboard --logdir=path/to/log/
# 例如
tensorboard --logdir=work_space/EcapaTdnn_Fbank_CrossEntropyLoss_20250730_193758_0316/log

可視化效果?

f009e6ad8518404eba031396bc616642.png

b6a325180de642f3b3468ea1e13232e0.png

58a4a989464f489e891223ca12fa56ac.png

(6)一些優化建議

如果想進一步提高準確率,可以嘗試:

  1. 樣本均衡: 建議進行樣本均衡處理,避免長尾問題
  2. 調超參: 比如學習率調整策略,優化器(SGD,Adam等)
  3. 音頻特征:目前支持MelSpectrogram、Spectrogram、MFCC、Fbank等多種語音特征,可以嘗試不同的語音特征組合。
  4. 損失函數: 目前訓練代碼已經支持:交叉熵CrossEntropy,LabelSmoothing,可以嘗試FocalLoss等損失函數

(7)一些運行錯誤處理方法

  • 項目不要出現含有中文字符的目錄文件或路徑,否則可能會出現很多異常!!!!!!!!

  • 一些常見的錯誤和解決方法,請參考這里:項目開發使用教程和常見問題和解決方法


4. 模型測試效果

?demo.py文件用于推理和測試模型的效果,填寫好配置文件,模型文件以及測試數據即可運行測試了

#!/usr/bin/env bash
# Usage:
# python demo.py  -c "path/to/config.yaml" -m "path/to/model.pth" --audio_dir "path/to/data_dir"python demo.py --config_file work_space/TDNN_Fbank_CrossEntropyLoss_20250730_171739_7128/config.yaml --model_file work_space/TDNN_Fbank_CrossEntropyLoss_20250730_171739_7128/model/best_model_096_98.1395.pth --audio_dir data/test_audio

運行測試結果:?

頻譜圖

預測結果

file:data/test_audio/baby-cry01.wav name:['cry'],label:[0],score:[0.9999933242797852]


?

file:data/test_audio/baby-cry02.wav name:['cry'],label:[0],score:[0.999161958694458]
?
file:data/test_audio/other02.wav name:['others'],label:[1],score:[0.9999972581863403]

?
file:data/test_audio/other03.wav name:['others'],label:[1],score:[0.9989004135131836]
?


5. 項目源碼下載

整套項目源碼內容包含:

【源碼下載】請關注【AI吃大瓜】,回復關鍵字【嬰兒哭聲】

  • 項目提供嬰兒哭聲語音數據集(baby-cry): 其中訓練集3120個語音樣本,測試集645個樣本
  • 項目提供網絡模型支持CNN模型MobileNet和ResNet,也支持時延神經網絡TDNN、ECAPA-TDNN以及LSTM等常見的模型,用戶也可以自定義其他模型進行訓練和測試,
  • 項目提供多種語音特征,支持MelSpectrogram、Spectrogram、MFCC、Fbank等多種音頻特征提取。
  • 項目提供訓練代碼,損失函數支持交叉熵CrossEntropy,LabelSmoothing以及FocalLoss等損失函數,提供Log可視化等效果。
  • 項目提供測試代碼,運行demo.py,可以直接測試音頻文件識別效果
  • 項目提供已經訓練好的模型,無需重新訓練,配置好Pytorch環境,可運行demo.py測試效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91959.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91959.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91959.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

海信IP810N/海信IP811N_海思MV320-安卓9.0主板-TTL燒錄包-可救磚

海信IP810N/海信IP811N_海思MV320處理器-安卓9主板-TTL燒錄包-可救磚準備工作:TTL線自備跑碼工具【putty跑碼中文版】路徑:【工具大全】-【putty跑碼中文版】測試跑碼以后將跑碼窗口關閉;然后到下方下載燒錄工具并大致看下教程燒錄…

Go 中的 interface{} 與 Java 中的 Object:相似之處與本質差異

在軟件系統開發中,“通用類型”的處理是各語言設計中不可忽視的一部分。Java 使用 Object,Go 使用 interface{},它們都可以容納任意類型的值,是實現動態行為或通用容器的基礎類型。然而,雖然兩者在使用層面看似相似&am…

Docker-07.Docker基礎-數據卷掛載

一.案例首先我們通過一則案例來引出問題。我們要修改nginx容器內的html目錄下的index.html文件,并且要將靜態資源部署到nginx的html目錄,就要首先知道該html目錄的所在位置。我們首先查看nginx鏡像的幫助文檔,這里就是將有關靜態資源目錄的&a…

數據結構(三)雙向鏈表

一、什么是 make 工具?make 是一個自動化構建工具,主要用于管理 C/C 項目的編譯和鏈接過程。它通過讀取 Makefile 文件中定義的規則,自動判斷哪些文件被修改,并僅重新編譯這些部分,從而大幅提高構建效率。二、什么是 M…

如何在沒有iCloud的情況下將聯系人轉移到新iPhone?

升級到新 iPhone 后,設置已完成,想在不使用 iCloud 的情況下將聯系人從 iPhone 轉移到 iPhone 嗎?別擔心。還有其他 5 種方法可以幫助您輕松地將聯系人轉移到新 iPhone。這樣,您就無需再次重置新設備了。第 1 部分:如何…

SpringBoot3.x入門到精通系列:4.2 整合 Kafka 詳解

SpringBoot 3.x 整合 Kafka 詳解 🎯 Kafka簡介 Apache Kafka是一個分布式流處理平臺,主要用于構建實時數據管道和流應用程序。它具有高吞吐量、低延遲、可擴展性和容錯性等特點。 核心概念 Producer: 生產者,發送消息到Kafka集群Consumer: 消…

Android audio之 AudioDeviceInventory

1. 類介紹 AudioDeviceInventory 是 Android 音頻系統中的一個核心類,位于 frameworks/base/services/core/java/com/android/server/audio/ 路徑下。它負責 管理所有音頻設備的連接狀態,包括設備的添加、移除、狀態更新以及策略應用。 設備連接狀態管理:記錄所有已連接的音…

系統設計入門:成為更優秀的工程師

系統設計入門指南 動機 現在你可以學習如何設計大規模系統,為系統設計面試做準備。本指南包含的是一個有組織的資源集合,旨在幫助你了解如何構建可擴展的系統。 學習設計大規模系統 學習如何設計可擴展系統將幫助你成為更優秀的工程師。系統設計是一個…

Pandas數據分析工具基礎

文章目錄 0. 學習目標 1. Pandas的數據結構分析 1.1 Series - 序列 1.1.1 Series概念 1.1.2 Series類的構造方法 1.1.3 創建Series對象 1.1.3.1 基于列表創建Series對象 1.1.3.2 基于字典創建Series對象 1.1.4 獲取Series對象的數據 1.1.5 Series對象的運算 1.1.6 增刪Series對…

大模型——Qwen開源會寫中文的生圖模型Qwen-Image

Qwen開源會寫中文的生圖模型Qwen-Image 會寫中文,這基本上是開源圖片生成模型的獨一份了。 這次開源的Qwen-Image 的最大賣點是“像素級文字生成”。它能直接在像素空間內完成排版:從小字注腳到整版海報均可清晰呈現,且同時支持英文字母與漢字。 以下圖片均來自官網的生成…

大模型知識庫(1)京東云 JoyAgent介紹

一、核心定位? JoyAgent 是京東云推出的 ?首個 100% 開源的企業級多智能體平臺,定位為“可插拔的智能發動機”,旨在通過開箱即用的產品級能力,降低企業部署智能體的門檻。其特點包括: ?完整開源?:前端&#xff0…

PowerShell 入門2: 使用幫助系統

PowerShell 入門 2:使用幫助系統 🎯 一、認識 PowerShell 幫助系統 1. 使用 Get-Help 查看命令說明 Get-Help Get-Service或使用別名: gsv2. 更新幫助系統 Update-Help3. 搜索包含關鍵詞的命令(模糊搜索) Help *log*&a…

hyper-v實戰系列:顯卡虛擬化(GPU分區)--windows篇詳解

一般來說,windows系統中最常使用的虛擬機就3個:vmware workstation,virtualbox和微軟系統自帶的hyper-v。后面與前兩者最大的區別就是能調用物理顯卡的性能。 我在這篇博文會詳述如何設置windows虛擬機的顯卡虛擬化,并會隨之…

WebGL應用實時云渲染改造后如何與網頁端實現數據通信

WebGL是一種基于OpenGL ES 2.0的Web技術,屬于BS架構,它允許在瀏覽器中渲染交互式3D和2D圖形。 隨著大場景高精度的開發要求深入,對于較高級的 WebGL 應用程序,需要性能更強的系統要求,如仍然維持低端硬件或瀏覽器&…

初始化列表,變量存儲區域和友元變量

前言初始化列表是書寫構造函數的一種方式,某些成員變量之只能通過初始化列表進行初始化。另外學習c不可避免地需要知道什么樣的變量存儲在什么區域當中如棧,堆,靜態區,常量區初始化列表書寫格式書寫上,初始化列表&…

excel插入復選框 親測有效

特別說明 1.開始位置是0 2.\u0052是勾選對號 3.\u25A1是不勾選 4.\u0052長度是1 5.\u25A1長度是1 6.漢字長度是1 7.起止位置不能超過索引位置(比如整體長度是6,截止位置最大填寫5) 示例代碼 package com.zycfc.xz.Util.excel;import org.apache.poi.hssf.usermodel.HSSFRichT…

Mac上優雅簡單地使用Git:從入門到高效工作流

Mac上優雅簡單地使用Git:從入門到高效工作流 本文將帶你解鎖在Mac上優雅使用Git的技巧,結合命令行與圖形工具,讓版本控制變得輕松高效! 一、為什么Mac是Git的最佳搭檔? 天生支持Unix命令:Git基于Linux開發…

一文了解SOA的紋波

什么是光譜紋波我們在SOA/RSOA/SLD的ASE(放大的自發輻射)光譜測試中,經常會觀察到光譜中有周期性的變化,通常我們稱之為紋波。在實際應用中,我們大多不希望這些紋波的存在。添加圖片注釋,不超過 140 字&…

ossutil 使用方法

目錄 ossutil 使用方法 1. 📤 上傳文件/文件夾到 OSS 上傳單個文件: 上傳整個文件夾(遞歸): 2. 📥 從 OSS 下載文件/文件夾 下載單個文件: 下載整個文件夾: ossutil 使用方法…

從“多、老、舊”到“4i煥新”:品牌官方商城(小程序/官網/APP···)的范式躍遷與增長再想象

全新升級版本「佛羅倫薩小鎮奧萊GO」商城正式上線!會員福利加碼 2025年,品牌官方商城應該如何定義?—— 還是一套“電商貨架”? 在商派看來,現如今“品牌官方商城”則需要重新定義,結合不同品牌企業的業務…