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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在SDK上使用容器構建高音頻質量的應用程序

星星科技指導員 ? 來源:NVIDIA ? 作者:About Abhishek Sawark ? 2022-03-31 16:31 ? 次閱讀

隨著音頻視頻流、會議和電信的興起,開發(fā)人員必須構建具有卓越音頻質量的應用程序,并使最終用戶能夠有效地進行通信和協(xié)作。各種背景噪音會干擾通信,從交通和建筑到狗吠和嬰兒哭鬧。此外,用戶可以在放大回聲的大房間里講話。

NVIDIA Maxine提供了一種易于使用的 Audio Effects SDK 和 AI 神經網絡音頻質量增強算法,以解決虛擬協(xié)作和內容創(chuàng)建應用程序中音頻質量差的問題。使用 Audio Effects SDK ,您可以消除幾乎任何類型的噪音,包括房間回音,并構建能夠輕松理解對話和高效會議的應用程序。

在本文中,您將學習如何在 Linux 或 Windows 平臺上的 SDK 上使用容器構建高音頻質量的應用程序。所有這些都通過預構建的示例應用程序進行了演示。

構建沒有背景噪音或房間回聲的應用程序

Maxine Audio Effects SDK 使您能夠將窄帶、寬帶和超寬帶音頻的噪音消除和房間回聲消除功能集成到應用程序中。

噪聲消除

隨著我們開始更多地在家工作,在我們通話的背景中有許多潛在的噪聲源,例如按鍵聲或空調壓縮機的聲音。我們周圍的分心成為我們周圍環(huán)境的一部分,比如關上門、搬家具或吸塵器。

使用噪聲消除效果,您可以從音頻流中去除不同的噪聲,同時保留說話人聲音的情感方面。例如,當最終用戶感到興奮,并在空調的背景下以更高的音調提出新想法時,噪音消除只保留說話人的聲音。

房間回音消除

當一個人在一個封閉的房間里講話時,聲音會從周圍的所有表面反彈。聲音在多次迭代中被吸收、減弱或繼續(xù)反射的程度取決于曲面的大小、幾何體和材質。這種持續(xù)的聲波反射會隨著時間的推移而增強,并引起混響。

回聲在具有更多反射表面的大房間(如混凝土墻或石墻)中更為明顯。例如,想象一下高天花板大教堂中的聲音混響。這種reverberant語音不適合于廣泛使用的語音編碼方法,如線性預測編碼或碼激勵線性預測?;祉懻Z音的編碼會導致嚴重的失真,在極端情況下會導致語音無法理解。

在發(fā)送語音記錄之前,必須消除語音記錄中的此類混響。在編碼前無法消除回聲的情況下,在通過揚聲器將解碼語音呈現(xiàn)給聽眾之前,必須盡可能多地消除回聲。當用戶在混響環(huán)境中講話時,房間回音消除效果消除了語音中不必要的回聲。此外,此功能支持寬帶和超寬帶信號

您可以將噪音消除和房間回聲消除功能結合起來,以在兩個方向上獲得更好的端到端音頻質量。

獲取適用于 Windows 或 Linux 的 Maxine Audio Effects SDK

將容器與 Kubernetes 一起使用提供了一種健壯且易于擴展的部署策略。除了預先打包的容器外,我們還提供適用于 Windows 和 Linux 平臺的 Maxine Audio Effects SDK 。使用容器的好處是由于更快的部署和更短的維護時間而實現(xiàn)了高可擴展性、時間和成本節(jié)約。此外,由于容器的預包裝性質,您不必擔心容器內的特定安裝。

在本文中,我們將重點介紹如何使用 Audio Effects SDK 容器。繼續(xù)安裝之前,請確保滿足所有硬件要求。

如果您對 NVIDIA TensorRT 和 cuDNN 有豐富的經驗,并且希望在裸機 Linux 系統(tǒng)上部署 Audio Effects SDK ,請在 Maxine 開始頁面上下載特定平臺的 SDK 。

音頻效果 SDK Docker 容器

在容器上安裝和利用高性能 Audio Effects SDK 及其最先進的 AI 模型需要四個步驟:

下載 NVIDIA 驅動程序

下載 Docker 和 NVIDIA -Docker用于將 GPU 暴露在容器中

使用NGC API 密鑰登錄 NGC 注冊表

拉動音頻效果 SDK 容器

您需要訪問 NVIDIA Turing、 NVIDIA Volta 或 NVIDIA Ampere Architecture 生成數據中心 GPU s : T4 、 V100 、 A100 、 A10 或 A30 。

在 Windows 上安裝 Audio Effects SDK

在 Windows 上安裝 SDK 是一個簡單的過程:

下載適用于 Windows 的 NVIDIA 圖形驅動程序

下載 Microsoft Visual Studio 2017 或更高版本(確保安裝構建工具)

從Maxine 開始了頁面下載最新的 Audio Effects SDK 軟件包

您必須擁有 NVIDIA RTX 卡才能從 Windows 上 Audio Effects SDK 的加速吞吐量和縮短延遲中獲益。要在數據中心卡(如 A100 )上運行此 SDK ,請使用 Linux 包。

將 Audio Effects SDK 與預構建的示例應用程序一起使用

Audio Effects SDK 附帶預構建的effects_demo和effects_delayed_streams_demo示例應用程序,以演示如何使用 SDK 。您還可以構建自己的示例應用程序。在本文中,我們將重點介紹如何運行effects_demo示例應用程序。

實時音頻效果演示

effects_demo應用程序演示如何使用 SDK 將效果應用于音頻。它可以用于應用噪音消除、房間回聲消除或兩者的組合效果來輸入音頻文件并將輸出寫入文件。

要運行此應用程序,請導航到samples/effects_demo目錄,并使用以下腳本之一運行該應用程序:

$ 。/run_effect.sh -a turing -s 16 -b 1 -e denoiser

$ 。/run_effect.sh -a turing -s 48 -b 1 -e dereverb

$ 。/run_effect.sh -a turing -s 16 -b 400 -e denoiser

$ 。/run_effect.sh -a turing -s 48 -b 400 -e dereverb_denoiser

run_effect.sh bash 腳本接受以下參數

-a:架構可以是 NVIDIA 圖靈、 NVIDIA 沃爾塔、 A100 或 A10 ,具體取決于您的 GPU 。

-s:使用 48 / 16 KHz 的采樣率。

-b:批量大小。

-e:要運行的效果:

denoiser( NR )

dereverb( RER )

dereverb_denoiser(合并)

您還可以通過如下方式傳遞配置文件來執(zhí)行effects_demo二進制文件:

# For running denoiser on NVIDIA Turing GPU with 48kHz input and batch size 1

$ 。/effects_demo -c turing_denoise48k_1_cfg.txt

此配置文件應包含以下參數:

effect 《denoiser/dereverb/dereverb_denoiser》

sample_rate 《48000/16000》

model 《*.trtpkg》:模型可在容器內的/usr/local/AudioFX/models目錄中找到。

real_time 《0/1》:模擬來自物理設備或流的音頻接收。

intensity_ratio 《0.0-1.0》 :指定去噪強度比。

input_wav_list

output_wav_list

運行effects_demo示例應用程序后,已去噪的輸出文件與可執(zhí)行文件位于同一目錄中。

延遲流上的音頻效果 SDK 演示

effects_delayed_streams_demo應用程序演示如何處理延遲流。在電信領域,如果用戶的音頻 MIG ht 不能實時到達服務器,我們建議延遲應用去噪效果。在此示例應用程序中,每個輸入流都屬于以下類別之一:

one_step_delay_streams:這些流的延遲為一幀。例如,如果幀大小為 5ms ,則這些流具有 5ms 的延遲。

two_step_delay_streams:這些流有兩幀的延遲。例如,如果幀大小為 5ms ,則這些流具有 10ms 的延遲。

always_active_streams:這些流沒有延遲,始終處于活動狀態(tài)。

要運行此應用程序,請導航到samples/effects_delayed_streams_demo目錄并按如下方式執(zhí)行二進制文件:

$ 。/effects_delayed_streams_demo -c config-file

這里,-c config-file是配置文件的路徑,例如,turing_denoise48k_10_cfg.txt。配置文件接受以下參數:

effect 《denoiser/dereverb/dereverb_denoiser》

frame_size:一個無符號整數,指定音頻效果的每個音頻流每幀的采樣數。

sample_rate 《48000/16000》

model 《*.trtpkg》:模型可在容器內的/usr/local/AudioFX/models目錄中找到。

one_step_delay_streams:指定屬于one_step_delay_streams類別的流標識符。

two_step_delay_streams:指定屬于two_step_delay_streams類別的流標識符。

input_wav_list

output_wav_list

運行effects_delayed_streams_demo示例應用程序后,已去噪的輸出文件與可執(zhí)行文件位于同一目錄中。

使用 API 運行音頻效果功能

示例應用程序使用易于使用的 Audio Effects SDK API 來運行效果。它們利用了顯著的性能優(yōu)勢并控制了低級別 API 的批處理。在 Maxine 中創(chuàng)建和運行音頻效果是一個簡單的三步過程(圖 1 )。

#FormatImgID_0#圖 1 。運行 Audio Effects SDK 的步驟和函數

創(chuàng)造效果

要為噪聲消除或房間回聲消除創(chuàng)建效果,請調用NvAFX_CreateEffect函數,該函數接受帶有所需參數的句柄。此函數用于在創(chuàng)建所需效果后返回狀態(tài)代碼。繼續(xù)之前,請使用此狀態(tài)代碼檢查是否有任何錯誤。

// Create and handle

NvAFX_Handle handle;

// Call CreateEffect function and pass any one of the desired effects:

// NVAFX_EFFECT_DENOISER, NVAFX_EFFECT_DEREVERB,

// NVAFX_EFFECT_DEREVERB_DENOISER

NvAFX_Status err = NvAFX_CreateEffect(NVAFX_EFFECT_DENOISER, &handle);

每個提供的型號都支持特定的音頻采樣率,可以通過調用NvAFX_SetU32來指定。采樣率值應為無符號 32 位整數值( 48000 / 16000 )。此外,應使用NvAFX_SetString API 調用傳遞所用 GPU 平臺的正確模型路徑,如下所示:

// Pass parameter selector NVAFX_PARAM_SAMPLE_RATE and unsigned int

// Pass parameter selector NVAFX_PARAM_MODEL_PATH and character string

NvAFX_Status err;

err = NvAFX_SetU32(handle, NVAFX_PARAM_SAMPLE_RATE, sample_rate);

err = NvAFX_SetString(handle, NVAFX_PARAM_MODEL_PATH, model_file.c_str());

由于為每個效果預設了 I / O 音頻通道數和每幀采樣數,因此必須將這些參數傳遞給效果功能。要獲取支持的值列表,請調用NvAFX_GetU32函數,該函數返回預設值列表。

// Pass the selector string to get specific information like:

// NVAFX_PARAM_NUM_SAMPLES_PER_FRAME,

// NVAFX_PARAM_NUM_CHANNELS,

unsigned num_samples_per_frame, num_channels;

NvAFX_Status err;

err = NvAFX_GetU32(handle, NVAFX_PARAM_NUM_SAMPLES_PER_FRAME,

&num_samples_per_frame);

err = NvAFX_GetU32(handle, NVAFX_PARAM_NUM_CHANNELS, &num_channels);

要在 GPU 上運行效果,必須使用NvAFX_GetSupportedDevices函數獲取支持的設備列表,該函數獲取支持的 GPU 數量。

// The function fills the array with the CUDA device indices of devices

// that are supported by the model, in descending order of preference,

// where the first device is the most preferred device.

int numSupportedDevices = 0;

NvAFX_GetSupportedDevices(handle, &numSupportedDevices, nullptr);

std::vector《int》 ret(num);

NvAFX_GetSupportedDevices(handle, &numSupportedDevices, ret.data());

然后,您可以通過傳遞正確的 GPU 設備編號來設置要使用的 GPU 設備,如下所示:

NvAFX_SetU32(handle, NVAFX_PARAM_USE_DEFAULT_GPU, use_default_gpu_)

加載音頻效果

創(chuàng)建效果后,必須使用NvAFX_Load函數加載模型。加載效果選擇并加載模型,并驗證為效果設置的參數。此函數將模型加載到 GPU 內存中,并使其為推斷做好準備。要加載音頻效果,請調用NvAFX_Load函數并指定創(chuàng)建的效果句柄。

NvAFX_Status err = NvAFX_Load(handle);

運行音頻效果

最后,運行加載的音頻效果,將所需效果應用于輸入數據。運行效果后,讀取輸入內存緩沖區(qū)的內容,應用音頻效果,并將輸出寫入輸出內存緩沖區(qū)。調用NvAFX_Run函數在輸入緩沖區(qū)上運行加載的音頻效果。

// Pass the effect handle, input, and output memory buffer, and the parameters of the effect

NvAFX_Status err = NvAFX_Run(handle, input, output, num_samples,num_channels);

音頻效果應用于輸入內存緩沖區(qū)且不再需要后,通過傳遞效果句柄,使用NvAFX_DestroyEffect(handle)函數調用清理資源。

NvAFX_Status err = NvAFX_DestroyEffect(handle);

總結

現(xiàn)在,我們已經了解了 Maxine Audio Effects 功能的詳細信息,向您展示了如何使用適當的參數運行示例應用程序,并了解了易于使用的高性能 API ,您可以開始使用Maxine 容器或在窗戶上和在 Linux 上將這些驚人的 AI 音頻功能集成到您的應用程序中。

關于作者

About Abhishek Sawarkar

Abhishek Sawarkar 責在 NVIDIA Jarvis 框架上開發(fā)和展示以深度學習為重點的內容。他的背景是計算機視覺機器學習,但目前他正致力于整個 Jarvis 多模式管道,包括 ASR 、 NLP 、 TTS 和 CV 。他是卡內基梅隆大學的一名應屆畢業(yè)生,具有電氣和計算機工程碩士學位。

About Gordana Neskovic

Gordana Neskovic 是AI/DL產品營銷團隊的成員,負責 NVIDIA Maxine。在加入 NVIDIA 之前,Gordana曾在VMware、Wells Fargo、Pinterest、SFO-ITT和KLA Tencor擔任過各種產品營銷、數據科學家、AI架構師和工程職位。她擁有博士學位。圣塔 Clara 大學,塞爾維亞貝爾格萊德大學電氣工程碩士和學士學位。

About Tanay Varshney

Tanay Varshney 是 NVIDIA 的一名深入學習的技術營銷工程師,負責廣泛的 DL 軟件產品。他擁有紐約大學計算機科學碩士學位,專注于計算機視覺、數據可視化和城市分析的橫斷面。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4771

    瀏覽量

    100777
  • NVIDIA
    +關注

    關注

    14

    文章

    4989

    瀏覽量

    103074
  • SDK
    SDK
    +關注

    關注

    3

    文章

    1036

    瀏覽量

    45955
收藏 人收藏

    評論

    相關推薦

    何在TMS320C6727 DSP創(chuàng)建基于延遲的音頻效果

    電子發(fā)燒友網站提供《如何在TMS320C6727 DSP創(chuàng)建基于延遲的音頻效果.pdf》資料免費下載
    發(fā)表于 10-16 10:35 ?0次下載
    如<b class='flag-5'>何在</b>TMS320C6727 DSP<b class='flag-5'>上</b>創(chuàng)建基于延遲的<b class='flag-5'>音頻</b>效果

    通過通道求和提高音頻ADC的動態(tài)范圍和SNR

    電子發(fā)燒友網站提供《通過通道求和提高音頻ADC的動態(tài)范圍和SNR.pdf》資料免費下載
    發(fā)表于 08-29 09:28 ?0次下載
    通過通道求和提<b class='flag-5'>高音頻</b>ADC的動態(tài)范圍和SNR

    NISSHINBO日清紡微推出面向高音音頻的600mA超低噪聲LDO “MUSES” 系列中首款適合高音質的電源IC “MUSES100”新品上市

    質技術推廣到電源IC。這樣,構建注重音質的系統(tǒng)會變得更容易。 2. 實現(xiàn)低輸出噪聲電壓和高紋波抑制比 “MUSES100”系列產品實現(xiàn)了高音音頻所需的超低輸出噪聲電壓和高紋波抑制比。 輸出噪聲電壓
    發(fā)表于 08-11 14:12

    請問如何在NodeMcu設置NON-OS SDK?

    何在 NodeMcu 設置 NON-OS SDK
    發(fā)表于 07-19 14:51

    可以在單個esp8266安裝兩個NON OS SDK應用程序嗎?

    一個簡單的問題。我可以在單個 esp8266 安裝兩個 NON OS SDK 應用程序嗎?我的自定義引導加載程序(包括 os libs)和我的自定義
    發(fā)表于 07-19 07:28

    應用程序從NoOS SDK移植到RTOS SDK遇到異常怎么解決?

    我正在將應用程序從 NoOS SDK 移植到 RTOS SDK。但現(xiàn)在有問題了。它得到了致命的異常 28。 問:context(stack) 通過espconn_regist_recvcb回調使用什么? os_timer_set
    發(fā)表于 07-11 07:56

    何在不同應用場景下構建音頻測試環(huán)境

    在之前的文章中,我們已經詳細介紹了基礎音頻參數和AP525的軟硬件配置。本文將延續(xù)這一主題,以泰凌TLSR9518A EVB作為測試設備(DUT),向大家展示如何在不同應用場景下構建音頻
    的頭像 發(fā)表于 07-03 15:00 ?558次閱讀
    如<b class='flag-5'>何在</b>不同應用場景下<b class='flag-5'>構建</b><b class='flag-5'>音頻</b>測試環(huán)境

    容器怎么完成和容器引擎的映射

    Javascript與Java應用程序綁定在一起,從而實現(xiàn)應用程序的自動化測試。 Docker 示例 docker run -d -p 宿主機端口:容器端口 鏡像名 例如,要將容器的8
    的頭像 發(fā)表于 06-06 15:18 ?375次閱讀

    基于STM32G474的電機控制,如何在sdk配置使用spwm波?

    基于STM32G474的電機控制,如何在sdk配置使用spwm波
    發(fā)表于 05-30 06:28

    使用Linux CLI應用程序進行批量傳輸,無法執(zhí)行寫入/讀取操作怎么解決?

    傳輸。 2) 測試 VID/PID 已添加到 .inf 中。 3) 使用 FX3-sdk(windows)構建固件。 現(xiàn)在我要進行 Linux 設置 1) 應用程序
    發(fā)表于 05-29 06:07

    基于全志T113-i的Docker容器實現(xiàn)方案

    通過使用Docker,開發(fā)人員可以更容易地構建、交付和運行應用程序,同時確保應用程序的一致性及可移植性。它也使得應用程序的部署更加靈活、高效,因為它可以快速地啟動、停止和擴展
    發(fā)表于 04-19 09:45 ?912次閱讀
    基于全志T113-i的Docker<b class='flag-5'>容器</b>實現(xiàn)方案

    Docker容器技術的安裝和使用

    通過Docker,開發(fā)人員可以更容易地構建、交付和運行應用程序,同時確保應用程序的一致性和可移植性。它也使得應用程序的部署更加靈活和高效,因為它可以快速地啟動、停止和擴展
    發(fā)表于 04-16 11:24 ?328次閱讀
    Docker<b class='flag-5'>容器</b>技術的安裝和使用

    何在ModusToolbox?中檢查和設置應用程序的內存地址?

    何在ModusToolbox?中檢查和設置應用程序的內存地址?
    發(fā)表于 03-01 10:16

    谷歌發(fā)布新的AI SDK,簡化Gemini模型與Android應用程序的集成

    對于 Android 應用程序,Google 提供了 Google AI Client SDK for Android,它將 Gemini REST API 封裝為慣用的 Kotlin API
    的頭像 發(fā)表于 01-03 16:29 ?943次閱讀

    如何構建linux開發(fā)環(huán)境和編譯軟件工程、應用程序

    前文介紹了如何使用官方提供的鏡像文件啟動開發(fā)板,本文將說明如何構建linux開發(fā)環(huán)境和編譯軟件工程、應用程序。
    的頭像 發(fā)表于 01-03 12:31 ?2059次閱讀
    如何<b class='flag-5'>構建</b>linux開發(fā)環(huán)境和編譯軟件工程、<b class='flag-5'>應用程序</b>