变声原理:卷积和传递函数
生活随笔
收集整理的這篇文章主要介紹了
变声原理:卷积和传递函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
idea
關于系統
我們將一個空曠的房間類比于一個系統,如果我們在房間內放置一個聲源,聲音信號經過墻壁,天花板,地面,放置的種種物品的反射,最終會被我們人耳或者聲音采集設備收集。這個系統顯然對聲音具有一定的處理作用,并且這些放置物品以及房間本身結構以及材料的獨特性,決定了代表其特征的傳遞函數。
關于傳遞函數
在自動控制原理中我們獲悉,一個系統的傳遞函數可以通過實驗的方法獲得,一個系統的沖激響應即為其傳遞函數。
Y(s) = G(s)·L[δ(t)]完美的沖激信號我們無法輕易獲得,事實上我們可以用一個尖銳的聲音信號代替之。在這里,我將收集拍手聲經過房間這個系統作用之后的信號,以此求出房間這個系統的傳遞函數。
關于卷積
時域信號的卷積等于頻域的相乘,這一點與傳遞函數的理解是一致的,即有:
Y[s] = G(s)·X(s)值得一提的是,本次實驗中我采用了手機進行聲音信號的采集,手機采集到的聲音信息是雙通道的,我們在進行卷積之前,需要對聲音信號預先進行聲道合并和格式處理。
思路
用拍手聲模擬沖激響應之后,我們需要在另一相對安靜的環境下采集另一段音頻信號,同樣地在卷積運算之前需要對信號進行預處理。而后即可通過matlab進行編程實現卷積運算了。
代碼展示
讀取兩段音頻
clear; clc % 讀取兩段音頻 IR = audioread('Gs.wav'); voice = audioread('warm_song.wav'); mix = conv(voice,IR); % 作圖觀察沖激信號 plot(IR); audiowrite('conv_song.wav',mix,48000);圖像如下:
可見在信號發生之初還是比較“銳利”的。
卷積之前的聲音
在命令行直接輸入即可
sound(voice,48000)卷積之后的聲音
在命令行直接輸入即可
sound(mix,48000)完整聲音文件及調試見:
鏈接:https://pan.baidu.com/s/10zaN58aUof37uqg5ERSfZQ
提取碼:g6j1
總結
以上是生活随笔為你收集整理的变声原理:卷积和传递函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 继 PixivFANBOX 后,DLsi
- 下一篇: 嫦娥是辅助吗