人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

音声信号処理①〜解決編〜

前回の記事は信号処理の実行方法について紹介しただけなので

今回はプログラムのコードの説明をしていきます。

Youtubeでの解説も行なっていますので、

見てみてください。

mukyouroku.hatenablog.com

 

Volume Boost

def volumeBoost(sig, fs):
    for i in range(len(sig)):
        sig[i] = sig[i] * (1 + i/(fs/8))
    return sig

これは音を線形的に大きくする処理。

sig[i] = sig[i] * (1 + i/(fs/8)) のi/(fs/8)をいじることで

線形の傾きの角度をいじることが出来ます。

 

syntesis

def synthesis(sigList):
    maxLength = 0
    tmpLength = 0
    for i in sigList:
        if len(i) > tmpLength:
            maxLength = len(i)
            tmpLength = len(i)

    sig = np.zeros(maxLength)

    sig = sigList[0] + sigList[1] + sigList[2]
    return sig

 まず入力sigListには複数の音声ファイルが入っています。

音声を合成する際、短い音声と長い音声を合成したとすると、

短い音声 + 長い音声をするとデータのはみ出た部分がでる

ため、エラーをくらいます。

ですので、長い音声に合わせるため for 文を使って一番長い音声

を見つけ出します。

そして、sig = np.zeros(maxLength)

で0埋めされた配列を作ります。

あとはそれに、好きな音声ファイルを足しこむだけです。

 

fastForward

def fastForward(sig):
    sigFast = []
    for i in range(0, len(sig), 2):
        sigFast.append(sig[i] / 100)

    return sigFast

 sigで音声ファイルを一つ入力します。

そして、for 文で一つ飛ばしでデータを取っていきます。

配列の番号0,2,4,6,8,...でデータを取ることで

早送りを行います。

www.youtube.com