質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

フィルタ

フィルタとは、特定の条件に合わせてデータへのアクセスをブロックするプログラムやルーチンを指します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

0回答

659閲覧

音声雑音処理プログラムについて

genius

総合スコア5

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

フィルタ

フィルタとは、特定の条件に合わせてデータへのアクセスをブロックするプログラムやルーチンを指します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

1クリップ

投稿2020/02/18 07:55

編集2020/02/18 07:56

お世話になっております。

音声雑音処理としてウィーナーフィルタを作ろうとしています。
今回雑音とするのは「近くで喋っている人の声以外」です。
近くというのも曖昧ですので具体例を出しますが、雑音かどうかは自己相関を使って決めています。
相関が有れば人の声と判断し、無いなら雑音としています。

現在作ってうまくいってないのですが、基本的な流れを以下に示します。

サンプリング周波数16kHzで128サンプル取得

相関を求め、雑音なら雑音の配列に移動。
この時、ノイズのデータは蓄積されていて、「今までのノイズデータの半分+最新のノイズデータの半分」がノイズの配列に入っています。つまり古いデータになればなるほど、配列内での割合は小さくなっていきます。

ハニング窓をかけ、FFTで音声のデータを周波数毎のスペクトルに変換し、それぞれからノイズの平均スペクトルを減算、0以下になったら0にする。

IFFTで音声に戻す

この流れです。
FFTはオーバーラップを考慮していません。

結果は声が入ってる時の音声が変で、ケロケロした声といった感じです。
ウィーナーフィルタの仕組みはわかっていても、雑音をどのように定義するかが難しく困っています。
相関は0.05〜0.95まで、減算はノイズの平均スペクトルの0.1倍から8倍まで試しましたがうまくいきません。

一般的にウィーナーフィルタとはどのように設計されているのでしょうか?

サンプリング周波数は固定で、FFTの要素数は計算速度の都合上256までに留めています。
言語はc言語です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問