0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【技術(shù)分享】STM32實(shí)現(xiàn)單麥克風(fēng)實(shí)時(shí)神經(jīng)網(wǎng)絡(luò)降噪

電子發(fā)燒友論壇 ? 2022-04-11 10:33 ? 次閱讀

本文是基于NNoM神經(jīng)網(wǎng)絡(luò)框架實(shí)現(xiàn)的。NNoM是一個(gè)為單片機(jī)定制的神經(jīng)網(wǎng)絡(luò)框架,可以實(shí)現(xiàn)TensorFlow 模型的量化和部署到單片機(jī)上,可以在Cortex M4/7/33等ARM內(nèi)核的單片機(jī)上實(shí)現(xiàn)加速(STM32,LPC,Nordic nRF 等等)。

NNoM和本文代碼可以在后臺回復(fù):“麥克風(fēng)降噪”領(lǐng)取。

STM32實(shí)現(xiàn)單麥克風(fēng)實(shí)時(shí)神經(jīng)網(wǎng)絡(luò)(RNN)降噪演示

硬聲創(chuàng)作者:麻博士在科研

這個(gè)例子是根據(jù)著名的 RNNoise (https://jmvalin.ca/demo/rnnoise/) 的降噪方法進(jìn)行設(shè)計(jì)的。整體進(jìn)行了一些簡化和定點(diǎn)化的一些修改。

本例與RNNoise主要的區(qū)別如下:

此例子并非從RNNoise的模型直接轉(zhuǎn)換而來,而是從新基于Keras訓(xùn)練一個(gè)新模型,并轉(zhuǎn)化成NNoM模型。

音頻信號處理去掉了Pitch Filtering的部分。

RNN 網(wǎng)絡(luò)定點(diǎn)化時(shí),根據(jù)定點(diǎn)模型的一些特點(diǎn)進(jìn)行了部分神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)修改。

訓(xùn)練數(shù)據(jù)集選擇上使用了微軟的可定制語音數(shù)據(jù)庫而不是RNNoise收集的數(shù)據(jù)庫。

此例子用到的三方庫如下,大部分為寬松許可,但請大家在使用時(shí)遵循他們的開源協(xié)議。

RNNoise (https://jmvalin.ca/demo/rnnoise/)

Microsoft Scalable Noisy Speech Dataset (https://github.com/microsoft/MS-SNSD)

python speech features (https://github.com/jameslyons/python_speech_features)

arduino_fft (https://github.com/lloydroc/arduino_fft)

CMSIS (https://github.com/ARM-software/CMSIS_5)

NNoM本身許可為 Apache-2.0,詳細(xì)信息請看NNoM 開源主倉庫下的許可信息 (https://github.com/majianjia/nnom).

一些背景知識

如何用神經(jīng)網(wǎng)絡(luò)進(jìn)行語音降噪?

神經(jīng)網(wǎng)絡(luò)降噪通常有兩種方式:

語音信號直入神經(jīng)網(wǎng)絡(luò)模型,神經(jīng)網(wǎng)絡(luò)全權(quán)進(jìn)行識別處理并輸出降噪后的語音信號。

神經(jīng)網(wǎng)絡(luò)識別語音和噪音的特征,動態(tài)輸出增益,使用傳統(tǒng)信號處理方法進(jìn)行濾波。

RNNoise 使用的是第二種方法。

實(shí)際進(jìn)行語音降噪(濾波)的部分,是一個(gè)均衡器,也就是大家播放器內(nèi)調(diào)節(jié)低音高音的那個(gè)玩意兒。而均衡器(Equalizer)的本質(zhì)是很多個(gè)平行的帶通濾波器(Bandpass Filter). 我們神經(jīng)網(wǎng)絡(luò)的輸出,就是均衡器內(nèi)各個(gè)filter band的增益。

那輸入是什么?跟之前的 KeyWord Spotting例子(https://github.com/majianjia/nnom/tree/master/examples/keyword_spotting) 一樣,我們這里使用了梅爾倒頻譜 (MFCC)。如果不熟悉的小伙伴,可以回去看看KWS的解釋或自行百度。

跟RNNoise有一些不一樣的是我們的例子使用MFCC和梅爾刻度 (Mel-scale) 而不是他們用的OPUS-Scale 或者響度刻度 (Bark-Scale)。單純從刻度的對比上,他們其實(shí)差別不是很大。感興趣的同學(xué)可以自己去查查他們的區(qū)別。

系統(tǒng)圖如下

df316a14-b829-11ec-82f6-dac502259ad0.png

運(yùn)行步驟

如果想看詳細(xì)的解析,請?zhí)轿恼潞蟀氩糠?。這里介紹在RTT和STM32L476板子上把這套算法跑起來的步驟。

1.下載語音數(shù)據(jù)集

這里我們使用的數(shù)據(jù)集是微軟的可定制語音數(shù)據(jù)集Microsoft Scalable Noisy Speech Dataset (MS-SNSD: https://github.com/microsoft/MS-SNSD)。我們可以定制時(shí)長,噪音類型,噪音混合信噪比等。你需要把整個(gè)倉庫下載在 MS-SNSD/文件夾內(nèi)。整個(gè)數(shù)據(jù)庫有2.x GB大佬們請自行進(jìn)行g(shù)ithub加速。

下載完后,你就可以用它生成我們需要的干凈的語音和帶噪音的語音。同時(shí)我們還控制了語音混合的程度,也就是信噪比(SNR).

在MS-SNSD/目錄下修改 noisyspeech_synthesizer.cfg 就可以配置需要生成的語音文件,推薦配置如下:

sampling_rate:16000
audioformat:*.wav
audio_length:60
silence_length:0.0
total_hours:15
snr_lower:0
snr_upper:20
total_snrlevels: 3

如果打算快速測試一下,可以把 total_hour 減少為1或者2小時(shí)。

修改完后,運(yùn)行 noisyspeech_synthesizer.py 就可以生成我們需要的音頻WAV文件了。我們需要一對一的干凈的語音和帶噪音的語音,它們分別在MS-SNSD/CleanSpeech_training 和 MS-SNSD/NoisySpeech_training 內(nèi)。

2. 生成訓(xùn)練數(shù)據(jù)集

之前一步獲取到的是.wav文件,而我們訓(xùn)練神經(jīng)網(wǎng)絡(luò)使用的是 MFCC 和 gains。

現(xiàn)在我們可以運(yùn)行例子提供的gen_dataset.py來計(jì)算MFCC和gains。它最終會生成一個(gè)dataset.npz文件。

在這個(gè)文件里面,你可以配置這些內(nèi)容

需要MFCC的特征數(shù)(同時(shí)也會修改均衡器Equalizer的Banpass Filter的數(shù)量)。修改 num_filter = 20即可。通常數(shù)字在10到26。

這個(gè)腳本也會生成一個(gè)c工程使用的濾波器參數(shù)文件equalizer_coeff.h (generate_filter_header(...))。在C語音的均衡器中會使用這個(gè)頭文件。

另外,這個(gè)腳本還會生成兩個(gè)Demo音頻。一個(gè)叫_noisy_sample.wav 另一個(gè)叫 _filtered_sample.wav。前者為從訓(xùn)練集里面選出的一個(gè)帶噪音的范例,后者為用gains和均衡器濾波后文件?;旧希@個(gè)文件代表了這個(gè)降噪方法的最好的水平。后文會有詳細(xì)的說明怎么生成這個(gè)gains。

3. 訓(xùn)練模型

當(dāng)dataset.npz生成后,我們就可以跑 main.py來訓(xùn)練Keras模型了。訓(xùn)練好的模型會保存在目錄下model.h5

因?yàn)槲覀兊哪P妥罱K要放在單片機(jī)上跑,RNN 每次處理一個(gè) timestamp,所以我們的模型設(shè)置為stateful=True 和 timestamps=1。這樣的設(shè)置對于訓(xùn)練并不是很理想,因?yàn)榉聪騻鞑ィ˙P)沒有辦法很好的在很小的batch上工作。我們的Batch盡量設(shè)置得很大。這里設(shè)置batchsize >= 1024。

同時(shí),這一步會把我們之前的噪音范例_noisy_sample.wav ,使用RNN生成的gains來濾波filtered_sig = voice_denoise(...)(可以對比我們真實(shí)gains降噪的結(jié)果)。濾波后的文件保存為_nn_filtered_sample.wav。

在最后,調(diào)用NNoM的API generate_model(...) 生成NNoM模型文件 weights.h。

4. RNN 在 NNoM 上部署

本例提供了SConstruct, 所以你可以直接在目錄下運(yùn)行 scons 來編譯。默認(rèn)使用目錄下的main.c 編譯成PC可執(zhí)行程序。支持32/64bit windows。理論上也支持linux。

這個(gè)二進(jìn)制文件可以直接對 .wav 文件降噪并生成一個(gè)新的 .wav文件,使用方法如下:

注意:僅僅支持16kHz 1CH的格式。(程序不解析WAV只復(fù)制文件頭)。

Win powershell: .\rnn-denoise [input_file] [output_file] 或者拖拽.wav 文件到編譯完成的*.exe上

Linux: 大家自己試試

比如,運(yùn)行這個(gè)指令生成定點(diǎn)RNN濾波后的音頻:.\rnn-denoise _noisy_sample.wav _nn_fixedpoit_filtered_sample.wav

到此,目錄下一共有四個(gè)音頻,大家可以試聽一下。

_noisy_sample.wav-->原始帶噪音文件
_filtered_sample.wav-->用真實(shí)gains降噪的文件(訓(xùn)練的gains)
_nn_filtered_sample.wav-->Keras浮點(diǎn)模型gains降噪
_nn_fixedpoit_filtered_sample.wav   --> NNoM定點(diǎn)模型gains降噪

關(guān)于演示可以看文章頂部的視頻。

不過,大家可以先看個(gè)圖視覺上感受一下。Filtered by NNoM是我們單片機(jī)上的效果,對比Keras是模型原始輸出的效果。而Truth Gain是模型訓(xùn)練輸入的參考,也就是最原始最好的效果。可以看到這個(gè)算法濾掉的不少的東西,具體是不是噪聲。。。再說。

df4115fe-b829-11ec-82f6-dac502259ad0.png

以下是一大波細(xì)節(jié)講解

總的來說,我推薦大家看 gen_dataset.py 和 main.py里面的步驟,很多詳細(xì)的步驟都在注釋里面有相關(guān)的解釋。

關(guān)于訓(xùn)練數(shù)據(jù)

x_train 里面包含了13或者20個(gè)(默認(rèn))MFCC,除此之外,還有前10個(gè)MFCC特征的第一和第二導(dǎo)數(shù)(derivative)。這些為常用的語音識別特征。所以一共有 33 到 40 個(gè)特征。

df5c450e-b829-11ec-82f6-dac502259ad0.png

訓(xùn)練數(shù)據(jù)的生成步驟

y_train 里面有兩組數(shù)據(jù),一組是gains,另一個(gè)叫 VAD

Gains 與RNNoise方法相同,為 clean speech/noisy speech 在每一個(gè)band上的能量的開平方。是一組0-1的值,組大小為均衡器的帶通濾波器個(gè)數(shù)。

VAD 全稱叫 Voice Active Detection。為一個(gè)0-1的值,指示是否有語音。計(jì)算方法為檢測一個(gè)窗口內(nèi)總能量的大小是否超過一個(gè)閾值。

df7a5c7e-b829-11ec-82f6-dac502259ad0.png

語音能量和激活閾值

關(guān)于 Gains 和 VAD

在默認(rèn)的模型里面,有兩個(gè)輸出,其中一個(gè)便是VAD。在main_arm.c (單片機(jī)版本的Demo)里面,這個(gè)VAD值控制了板子上的一個(gè)LED。如果VAD > 0.5 LED 會被點(diǎn)亮。

下圖為使用Keras的模型識別 VAD時(shí)刻 和 gains 的計(jì)算結(jié)果。

df8d89f2-b829-11ec-82f6-dac502259ad0.png

在語音中各個(gè)頻段的增益

關(guān)于均衡器

這里使用了20(默認(rèn))或者13個(gè)帶通濾波器(Filter Band)來抑制噪音所在的頻率。實(shí)際上你可以設(shè)置成任何值。不過我推薦 大于10且小于30。每一個(gè)獨(dú)立的帶通濾波器的-3dB點(diǎn)都與它附近的帶通濾波器的-3dB點(diǎn)相交。響頻曲線如下:

dfa49dea-b829-11ec-82f6-dac502259ad0.png

濾波器響應(yīng)頻率范圍

音頻信號會平行地通過這些帶通濾波器,在最后把他們相加在一起。因?yàn)闉V波器是交叉的,最終混合的信號幅度過大導(dǎo)致數(shù)值溢出,所以最終混合的信號會乘上一個(gè)0.6(并非數(shù)學(xué)上驗(yàn)證的數(shù)值)再保存在int16 數(shù)組內(nèi)。

關(guān)于RNN模型的結(jié)構(gòu)

這里提供了兩個(gè)不同的RNN模型。一個(gè)是與RNNoise 類似的模型,各個(gè)RNN層之間包含很多的支線。這些支線會通過 concatenate 合并在一起。這個(gè)模型還會提供一個(gè)VAD輸出。整個(gè)模型一共約 120k的權(quán)重。比RNNoise稍高因?yàn)樽隽艘恍┽槍Χc(diǎn)模型的改變。其實(shí)這個(gè)模型有點(diǎn)過于復(fù)雜了,我嘗試過減少模型參數(shù),仍然可以很好的進(jìn)行降噪。大佬們可以大膽地調(diào)整參數(shù)。如圖下圖所示。

dfbd7af4-b829-11ec-82f6-dac502259ad0.png

另一個(gè)模型是一個(gè)簡單的多層GRU模型,這個(gè)模型不提供VAD輸出。非常震驚的是這個(gè)模型也能提供不錯(cuò)的效果。

如果想嘗試這個(gè)簡單的模型,在main.py里面修改 history = train(...) 成 train_simple(...)。

Keras的RNN需要把 stateful=True 打開,這樣NNoM在每計(jì)算一個(gè)timestamps的時(shí)候才不會重置state。

MCU 例子

這里提供了一個(gè) MCU 的文件main_arm.c。這個(gè)文件針對 STM32L476-Discovery 的麥克風(fēng)做了移植,可以直接使用板載麥克風(fēng)進(jìn)行語音降噪。

例子通過一個(gè)綠色 LED(PE8)輸出VAD檢測的結(jié)果,有人說話時(shí)就會亮。

除了單片機(jī)相關(guān)的代碼,功能上MCU代碼main_arm.c與PC代碼main.c完全一致, 本例雖然做了音頻降噪,但是并沒有針對音頻輸出寫驅(qū)動,所以降噪輸出是被直接拋棄了。大家可以自己寫保存或者回放的代碼。

如果你使用的是 ARM-Cortex M系列的MCU,做以下設(shè)置可以提升性能 (參考下面性能測試章節(jié))。

打開 NNoM 的 CMSIS-NN 后端,參考 Porting and Optimization Guide (https://github.com/majianjia/nnom/blob/master/docs/Porting_and_Optimisation_Guide.md)

在 mfcc.h里面,打開 PLATFORM_ARM 宏定義來使用ARM_FFT。

MCU 上的性能測試

傳統(tǒng)的 RNNoise 不止包含了浮點(diǎn)模型,還包括了其他計(jì)算(比如Pitch Filtering),導(dǎo)致總計(jì)算量在40MFLOPS左右。即是換成定點(diǎn)計(jì)算,一般的單片機(jī)也會很吃力。

本例中,浮點(diǎn)FFT,定點(diǎn)RNN模型,浮點(diǎn)均衡器(濾波器),并去掉了Pitch Filtering(額其實(shí)是因?yàn)槲也恢涝趺从茫?。我對這里使用的幾個(gè)運(yùn)算量大的模塊進(jìn)行了測試,分別是MFCC部分(包含F(xiàn)FT),神經(jīng)網(wǎng)絡(luò)部分,還有均衡器。

測試環(huán)境為

Board: STM32L476-Discovery

MCU: STM32L476, 超頻到 140MHz Cortex-M4F

音頻輸入: 板載PDM麥克風(fēng)

音頻輸出: 無

IDE: Keil MDK

測試條件:

神經(jīng)網(wǎng)絡(luò)后端: CMSIS-NN 或 Local C (本地后端)

FFT 庫(512點(diǎn)): arm_rfft_fast_f32 或 純FFT arduino_fft

優(yōu)化等級: -O0/-O1 或 -O2

均衡器濾波器數(shù)目: 13 band 或者 20 band

需要注意的是,這里使用的音頻格式為 16kHz 1CH,所以我們每次更新(FFT窗口:512,overlapping=50%)只有 256/16000 = 16ms 的時(shí)間來完成所有的計(jì)算。

13 Band Equalizer

dfde62c8-b829-11ec-82f6-dac502259ad0.png

可以看到,在完全優(yōu)化的情況下,最短用時(shí)僅僅6.18ms 相當(dāng)于38% 的CPU占用。在不適用ARM加速庫的情況下,也完全在16ms內(nèi)。因?yàn)樗械挠?jì)算量是固定的,測試下來同一項(xiàng)目內(nèi)時(shí)間沒有太多的波動。

20 Band Equalizer

dffa89e4-b829-11ec-82f6-dac502259ad0.png

20個(gè) band的情況下,在開啟優(yōu)化后也可以實(shí)現(xiàn)實(shí)時(shí)的語音降噪。

模型編譯log

e00ed16a-b829-11ec-82f6-dac502259ad0.png

單片機(jī)內(nèi)神經(jīng)網(wǎng)絡(luò)模型載入的log

e026a7c2-b829-11ec-82f6-dac502259ad0.png

單片機(jī)內(nèi)神經(jīng)網(wǎng)絡(luò)模型性能

點(diǎn)擊閱讀原文,即可下載硬聲APP。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4724

    瀏覽量

    100310
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10846

    瀏覽量

    353763
收藏 人收藏

    評論

    相關(guān)推薦

    TLV320ADC6140和8個(gè)PDM麥克風(fēng)設(shè)計(jì)麥克風(fēng)陣列,使用TDM格式輸出,每個(gè)麥克風(fēng)輸出相位是什么樣的?

    以前使用的是模擬麥克風(fēng),使用兩個(gè)4路輸入的CODEC,I2S格式,為了保證時(shí)鐘同步,后面使用FPGA進(jìn)行同步采樣,設(shè)計(jì)8麥克風(fēng)陣列效果還可以。為了簡化設(shè)計(jì)6140+8個(gè)PDM話筒,配置安裝手冊
    發(fā)表于 10-12 08:12

    一文全了解麥克風(fēng)陣列

    什么是麥克風(fēng)陣列? 想象一下一個(gè)小型音響部隊(duì)在你面前,它們站成一排,用不同的麥克風(fēng)捕捉聲音。這就是麥克風(fēng)陣列的基本概念。麥克風(fēng)陣列由多個(gè)麥克風(fēng)
    的頭像 發(fā)表于 09-03 16:03 ?842次閱讀
    一文全了解<b class='flag-5'>麥克風(fēng)</b>陣列

    麥克風(fēng)的 Turnkey 解決方案

    麥克風(fēng)的 Turnkey 解決方案提供了從硬件設(shè)計(jì)到系統(tǒng)集成的全面支持,通過高質(zhì)量的麥克風(fēng)技術(shù)解決了在各種應(yīng)用場景中遇到的音頻清晰度、噪聲抑制和設(shè)備集成等問題。無論是在專業(yè)錄音、公共演講還是智能設(shè)備中,選擇合適的
    的頭像 發(fā)表于 08-16 22:45 ?318次閱讀
    <b class='flag-5'>麥克風(fēng)</b>的 Turnkey 解決方案

    請問SC589 IIR是否有IIR對實(shí)時(shí)輸入的麥克風(fēng)濾波?

    SC589 IIR 是否有IIR對實(shí)時(shí)輸入的麥克風(fēng)濾波的例程 官方的那個(gè)IIR歷程是對固定輸入的一個(gè)1K和8K正弦波進(jìn)行濾波 我想對一個(gè)實(shí)時(shí)輸入的麥克風(fēng)進(jìn)行濾波 請問如何
    發(fā)表于 07-24 07:05

    如何在FPGA上實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)

    隨著人工智能技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)作為其核心組成部分,已廣泛應(yīng)用于圖像識別、語音識別、自然語言處理等多個(gè)領(lǐng)域。然而,傳統(tǒng)基于CPU或GPU的神經(jīng)網(wǎng)絡(luò)計(jì)算方式在實(shí)時(shí)性、能效比等方面存在
    的頭像 發(fā)表于 07-10 17:01 ?1420次閱讀

    STM32接入PC后能枚舉出來麥克風(fēng)設(shè)備,開始錄音后無數(shù)據(jù)是怎么回事?

    采集MEMS數(shù)字麥克風(fēng)PDM數(shù)據(jù),然后調(diào)用PDM2PCM庫轉(zhuǎn)換為PCM數(shù)據(jù),最后把PCM數(shù)據(jù)通過USB上傳給PC實(shí)現(xiàn)PC錄音 使用的STM32CubeMx生成初始化代碼后默認(rèn)是只有播放設(shè)備的,通過
    發(fā)表于 07-05 07:27

    利用深度循環(huán)神經(jīng)網(wǎng)絡(luò)對心電圖降噪

    具體的軟硬件實(shí)現(xiàn)點(diǎn)擊 http://mcu-ai.com/ MCU-AI技術(shù)網(wǎng)頁_MCU-AI 我們提出了一種利用由長短期記憶 (LSTM) 單元構(gòu)建的深度循環(huán)神經(jīng)網(wǎng)絡(luò)來降 噪心電圖信號 (ECG
    發(fā)表于 05-15 14:42

    助聽器降噪神經(jīng)網(wǎng)絡(luò)模型

    抑制任務(wù)是語音增強(qiáng)領(lǐng)域的一個(gè)重要學(xué)科, 隨著深度神經(jīng)網(wǎng)絡(luò)的興起,提出了幾種基于深度模型的音頻處理新方法[1,2,3,4]。然而,這些通常是為離線處理而開發(fā)的,不需要考慮實(shí)時(shí)性。當(dāng)使用神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 05-11 17:15

    MEMS麥克風(fēng)技術(shù)和解析:一文讀懂什么是硅麥?

    。 我們一只都在了解的是較傳統(tǒng)的麥克風(fēng),但已經(jīng)有不少年了,MEMS硅麥克風(fēng)得到了迅猛發(fā)展,是目前應(yīng)用最多的麥克風(fēng),它結(jié)合現(xiàn)代技術(shù),尤其是微機(jī)電系統(tǒng)(MEMS)的發(fā)展,功能日益強(qiáng)大。 M
    的頭像 發(fā)表于 04-09 18:11 ?4896次閱讀
    MEMS<b class='flag-5'>麥克風(fēng)</b><b class='flag-5'>技術(shù)</b>和解析:一文讀懂什么是硅麥?

    是否可以把STM32F407VG板子上的麥克風(fēng)屏蔽了,外接自己的兩個(gè)PDM麥克風(fēng)?

    請問是否可以把STM32F4DISCOVERY板子上的麥克風(fēng)屏蔽了,外接自己的兩個(gè)PDM麥克風(fēng)
    發(fā)表于 04-03 07:30

    麥克風(fēng)陣列雙通道降噪拾音模組A-59

    麥克風(fēng)模組
    深圳德宇科技有限公司
    發(fā)布于 :2024年03月29日 10:23:11

    麥克風(fēng)方案|U段家用麥克風(fēng)的特點(diǎn)和組成部分

    技術(shù)開發(fā)。 U段家用 KTV 麥克風(fēng)方案是一種高效、穩(wěn)定、抗干擾的方案,它可以提供高質(zhì)量的音頻傳輸和接收,讓人們在家中也能享受到專業(yè)級的 KTV 體驗(yàn)。U 段家用 KTV 麥克風(fēng)方案采用了 UHF 超高頻傳輸
    的頭像 發(fā)表于 03-21 14:57 ?993次閱讀

    STM32接入PC后能枚舉出來麥克風(fēng)設(shè)備,但是開始錄音后無數(shù)據(jù),為什么?

    采集MEMS數(shù)字麥克風(fēng)PDM數(shù)據(jù),然后調(diào)用PDM2PCM庫轉(zhuǎn)換為PCM數(shù)據(jù),最后把PCM數(shù)據(jù)通過USB上傳給PC實(shí)現(xiàn)PC錄音使用的STM32CubeMx生成初始化代碼后默認(rèn)是只有播放設(shè)備的,通過
    發(fā)表于 03-18 08:25

    無線麥克風(fēng)音頻方案

    無線麥克風(fēng)是音頻傳輸領(lǐng)域的一項(xiàng)重要技術(shù),廣泛應(yīng)用于演講、表演、會議等場合。而無線麥克風(fēng)的音頻方案中,無線芯片起著關(guān)鍵作用。下面將介紹無線麥克風(fēng)音頻方案中的
    的頭像 發(fā)表于 02-26 15:22 ?676次閱讀

    麥克風(fēng)端輸入和差分輸入優(yōu)缺點(diǎn)

    麥克風(fēng)端輸入和差分輸入優(yōu)缺點(diǎn)? 麥克風(fēng)是一種將聲音信號轉(zhuǎn)換為電信號的傳感器。麥克風(fēng)輸入可以分為端輸入和差分輸入兩種模式。兩種輸入模式在不
    的頭像 發(fā)表于 12-25 11:15 ?3132次閱讀