python: audioFlux XXCC 提取梅爾頻率倒譜系數 MFCC

承上一篇:python:audioFlux 使用教程

XXCC: 倒譜系數,支持所有頻譜類型. 可以提取梅爾頻率倒譜系數(MFCC)
? ? Cepstrum coefficients, supports all spectrum types.

以下是使用?audioflux?庫中?XXCC?類計算倒譜系數(如 MFCC)的示例代碼

代碼說明:

  1. 音頻讀取:使用?af.utils.sample_path('220')?獲取一個 220Hz 的音頻文件路徑,然后使用?af.read?函數讀取音頻數據和采樣率。
  2. 頻譜圖提取:創建?BFT?對象,設置參數并調用?bft?方法提取 mel 頻譜圖,最后取絕對值得到幅度譜。
  3. MFCC 提取:創建?XXCC?對象,設置時間長度,然后調用?xxcc?方法提取 MFCC 特征。
  4. 可視化:使用?fill_spec?函數將 MFCC 特征可視化,并添加顏色條。

編寫示例 audio_xxcc.py? 如下

# -*- coding: utf-8 -*-
""" XXCC: 倒譜系數,支持所有頻譜類型. 提取梅爾頻率倒譜系數(MFCC)Cepstrum coefficients, supports all spectrum types.
"""
import audioflux as af
import numpy as np
import matplotlib.pyplot as plt
from audioflux.type import SpectralFilterBankScaleType, SpectralDataType, CepstralRectifyType
from audioflux.display import fill_spec# 獲取一個 220Hz 的音頻文件
sample_path = af.utils.sample_path('220')
print(sample_path)
# 讀取音頻文件
audio_arr, sr = af.read(sample_path)# 創建 BFT 對象并提取 mel 梅爾頻譜
num = 128
bft_obj = af.BFT(num=num,radix2_exp=12,samplate=sr,scale_type=SpectralFilterBankScaleType.MEL, # 梅爾刻度data_type=SpectralDataType.POWER # 使用功率譜
)
spec_arr = bft_obj.bft(audio_arr)
spec_arr = np.abs(spec_arr) # 取絕對值,確保數據為實數# 初始化 XXCC對象
xxcc_obj = af.XXCC(num=bft_obj.num)
# 設置時間長度
xxcc_obj.set_time_length(time_length=spec_arr.shape[1])# 提取 XXCC 特征
cc_num = 13 # 提取的XXCC系數數量
mfcc_arr = xxcc_obj.xxcc(spec_arr, cc_num=13, rectify_type=CepstralRectifyType.LOG)# 可視化
audio_len = audio_arr.shape[0]
x_coords = bft_obj.x_coords(audio_len)
fig, ax = plt.subplots(figsize=(10, 6))
img = fill_spec(mfcc_arr,axes=ax,x_coords=x_coords,x_axis='time',title='MFCC via XXCC'
)
fig.colorbar(img, ax=ax)
plt.show()

?關鍵說明

  1. BFT 類的作用
    用于生成梅爾頻譜(Mel Spectrogram),作為?XXCC?的輸入。參數?radix2_exp=12?表示 FFT 窗口大小為?2^12=4096

  2. XXCC 參數配置

    • num?必須與?BFT?的?num?一致(梅爾濾波器數量)。

    • 必須調用?set_time_length?設置時間維度長度(對應頻譜的幀數)。

  3. 輸出維度
    mfcc_arr?的維度為?(cc_num, time),與標準 MFCC 一致。

  4. 擴展功能
    使用?xxcc_standard?方法可提取帶能量項和一階/二階差分的 MFCC:

energy_arr = np.sum(spec_arr, axis=0)  # 計算頻譜能量
coe_arr, delta1, delta2 = xxcc_obj.xxcc_standard(spec_arr,energy_arr,cc_num=13,delta_window_length=9
)

常見問題

  • 輸入數據類型:頻譜需為實數(np.abs?處理后的功率譜或幅度譜)。

  • 多通道支持:若音頻為多通道,需分別處理每個通道的頻譜。

  • 參數調優:調整?cc_num?可控制系數數量(如 20 或 40 維 MFCC)。


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

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

相關文章

為 docker 拉取鏡像配置代理

為 Docker 配置代理,有 兩個層面 的操作:(1) Docker 守護進程(用于拉取鏡像等操作),(2) Docker 容器內部(容器內應用的網絡流量)。 我們這篇文章著重于前者,以下是詳細步驟&#xff…

最新的es版本忘記密碼,重置密碼

剛剛安裝了最新的es版本,就忘了密碼,怎么重置密碼呢? 一、進入es的斌目錄 #進入es文件/bin 目錄 ./elasticsearch-reset-password -u elastic 二 、輸入對應的密碼 然后再次訪問 我的是去掉了ssl的訪問 三、如果報錯:解決 [main] WARN

cursor如何集成MCP服務

本文主要介紹 Cursor IDE 是如何通過 Model Context Protocol (MCP) 服務來增強其功能的。本文將重點介紹兩個核心 MCP 服務的集成:GitHub MCP 服務和 Filesystem MCP 服務。 MCP 服務簡介 MCP(Model Context Protocol)是一個允許 IDE 與各…

Linux LED驅動(gpio子系統)

0. gpio子系統 gpio子系統是linux內核當中用于管理GPIO資源的一套系統,它提供了很多GPIO相關的API接口,驅動程序中使用GPIO之前需要向gpio子系統申請。 gpio子系統的主要目的就是方便驅動開發者使用gpio,驅動開發者在設備樹中添加gpio相關信息…

go中new和make有什么異同?

相同點:都是給變量分配內存 不同點: 作用類型不同。new通常給int、string、數組類型的變量分配內存,而make通常給slice、map、channel分配內存。返回值類型不同。new返回指向變量的指針,make返回的是變量本身new分配內存空間后&…

C/C++基礎知識點

隨著工作中瑣事越來越多,靜下來好好敲代碼的時間越來越少,基礎知識雖然簡單,但常看常新,并記錄下來共勉。 一、基礎知識點 1. 內存區域中數據管理 在C和C中,內存分為多個區域,每個區域負責存儲不同類型的…

消息中間件kafka,rabbitMQ

在分布式系統中,消息中間件是實現不同組件之間異步通信的關鍵技術。Kafka 和 RabbitMQ 是兩個非常流行的消息中間件系統,它們各自有著不同的特點和應用場景。下面將分別介紹 Kafka 和 RabbitMQ,并討論它們在消息隊列中的使用。 一、Kafka (Apache Kafka) 主要特點: 高吞吐…

2k1000LA , 調試串口改成通信串口, uart.

客戶的問題解決了,但是 調試串口 改成通信串口的問題,并沒有解決,我走的其他的路徑。 先準備一些資料。 以備以后使用。 網上的資料。 總結: 實際上 有幾種思路了。 1 就是更改 設備樹的 chosen 節點, 瑞芯微又單獨…

springboot集成spring-cloud-context手動刷新并讀取更新后的配置文件

背景 springboot單體項目在運行過程需要刷新springboot配置文件值,比如某個接口限流閾值,新增某個賬戶等場景。分布式設計的可以直接引入一些持久化中間件比如redis等,也可以用相關配置中心中間件如nacos等。處于成本等場景單體項目可以考慮①…

proteus8.17 環境配置

Proteus介紹 Proteus 8.17 是一款功能強大的電子設計自動化(EDA)軟件,廣泛應用于電子電路設計、仿真和分析。以下是其主要特點和新功能: ### 主要功能 - **電路仿真**:支持數字和模擬電路的仿真,包括靜態…

手機端可部署的開源大模型; 通義千問2.5訓練和推理需要的內存和外存

手機端可部署的開源大模型 目錄 手機端可部署的開源大模型Qwen2.5 0.5B 7b 推理采用手機內存需要多少Qwen2.5 0.5B不同量化精度下的內存需求Qwen2.5 7B不同量化精度下的內存需求通義千問2.5訓練和推理需要的內存和外存推理階段1. Qwen2.5 - 7B2. Qwen2.5 - 14B3. Qwen2.5 - 72B…

【uniapp-兼容性處理】swiper在iOS上偶發出現后幾張圖片白屏情況

【日期】2025-04-14 【問題】 swiper在iOS上偶發出現后幾張圖片白屏情況 swiper內部的幾個swiper-item垂直排列,各自進行滾動,樣式方面兼容性出現問題 【原因】: 原代碼:(不應在swiper-item添加style屬性&#xf…

SpringBoot連接MQTT客戶端

引入依賴 <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.2</version> </dependency> 啟動類 SpringBootApplication public class AxiosDemoApplic…

HTML:網頁的骨架 — 入門詳解教程

HTML&#xff1a;網頁的骨架 — 入門詳解教程 HTML&#xff08;HyperText Markup Language&#xff0c;超文本標記語言&#xff09;是構建網頁的基礎語言&#xff0c;負責定義網頁的結構和內容。無論是簡單的個人博客&#xff0c;還是復雜的企業網站&#xff0c;HTML都是不可或…

212、【圖論】字符串接龍(Python)

題目描述 題目鏈接&#xff1a;110. 字符串接龍 代碼實現 import collectionsn int(input()) beginStr, endStr input().split() strList [input() for _ in range(n)]deque collections.deque() # 使用隊列遍歷結點 deque.append([beginStr, 1]) # 存儲當前字符串和遍…

操作系統導論——第19章 分頁:快速地址轉換(TLB)

使用分頁作為核心機制來實現虛擬內存&#xff0c;可能會帶來較高的性能開銷。使用分頁&#xff0c;就要將內存地址空間切分成大量固定大小的單元&#xff08;頁&#xff09;&#xff0c;并且需要記錄這些單元的地址映射信息。因為這些映射信息一般存儲在物理內存中&#xff0c;…

使用Apache POI(Java)創建docx文檔和表格

1、引入poi 依賴組件 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.0.0</version> </dependency> <dependency><groupId>org.apache.poi</groupId>&…

python cv2 安裝

在Python中安裝opencv-python&#xff08;即OpenCV庫&#xff09;&#xff0c;通常有兩種方法&#xff1a;使用pip命令或通過conda&#xff08;如果你使用的是Anaconda或Miniconda&#xff09;。以下是詳細的步驟&#xff1a; 方法1&#xff1a;使用pip 打開你的命令行界面&am…

讀者、寫者問題優化

#include <stdio.h> #include <time.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <semaphore.h> #define NUM_READERS 5 #define NUM_WRITERS 5 // 定義信號量和全局變量 sem_t sdata, srcount; int rea…

如何通過前端表格控件實現自動化報表?1

背景 最近伙伴客戶的項目經理遇見一個問題&#xff0c;他們在給甲方做自動化報表工具&#xff0c;項目已經基本做好了&#xff0c;但拿給最終甲方&#xff0c;業務人員不太買賬&#xff0c;項目經理為此也是天天抓狂&#xff0c;沒有想到合適的應對方案。 現階段主要面臨的問…