感情的なコンテンツを削除するために、音声をパラメトリックに劣化させます
RまたはMatlabで提案を受け入れますが、以下に示すコードはRのみです。 以下に添付されている音声ファイルは、2人の間の短い会話です。私の目標は、感情的な内容が認識できなくなるように、彼らのスピーチを歪めることです。難点は、この歪みのために1〜5のパラメトリックスペースが必要なことです。1〜5は「非常に認識可能な感情」、5は「認識できない感情」です。Rでそれを達成するために使用できると思った3つの方法があります。 ここから「ハッピー」オーディオウェーブをダウンロードします。 ここから「怒っている」オーディオウェーブをダウンロードします。 最初のアプローチは、ノイズを導入して全体的な明瞭度を低下させることでした。このソリューションを以下に示します(彼の提案に対して@ carl-witthoftに感謝します)。これにより、音声の明瞭度と感情的な内容の両方が低下しますが、非常に「汚い」アプローチです-パラメトリック空間を取得するのが正しいことは困難です。 require(seewave) require(tuneR) require(signal) h <- readWave("happy.wav") h <- cutw(h.norm,f=44100,from=0,to=2)#cut down to 2 sec n <- noisew(d=2,f=44100)#create 2-second white noise h.n <- h + n #combine audio wave with noise oscillo(h.n,f=44100)#visualize wave with noise(black) par(new=T) oscillo(h,f=44100,colwave=2)#visualize original wave(red) 2番目のアプローチは、特定の周波数帯域でのみ音声を歪めるために、何らかの方法でノイズを調整することです。元のオーディオ波から振幅エンベロープを抽出し、このエンベロープからノイズを生成してから、オーディオウェーブにノイズを再適用することでそれができると考えました。以下のコードはその方法を示しています。ノイズ自体とは異なる何かをし、音が割れますが、同じポイントに戻ります-ここでノイズの振幅を変更することしかできません。 n.env <- setenv(n, h,f=44100)#set envelope of …