以下の各音声データは、基本的な周期関数である三角波、ノコギリ波、 方形波を用いて、特定の音声データを作成したものです。
そして、そのグラフは、それらの音声の先頭部分 (0.01 秒間) の部分 を表示したものです。赤い曲線で書かれているのが元となる周期関数で、 実際の音声データファイル (WAV format, サンプリング周波数 22050Hz, 16bit 量子化) には、四角で表されている点のデータのみが納められて います。
聞き比べてみてください。
講義中に紹介した、ノコギリ波、方形波に対するフーリエ級数のグラフを 紹介します。
ノコギリ波に対するフーリエ級数は
でした。このフーリエ級数の最初の N 個の和のグラフを、 ノコギリ波のグラフと重ねたものを以下に紹介します。![]()
フーリエ級数が、徐々にノコギリ波に近づいていく様子が見えますが、 特徴的なのは、不連続点の近くではグラフの振動が大きくなり、 N を大きくなるとそれは徐々に不連続点の方に寄りますが、 一定の大きさの誤差であり続ける、ということです。 これがギブス現象と呼ばれる現象です。 この誤差は両側でそれぞれ段差の約 9% (=0.0894898...) になることが 知られています。
方形波に対するフーリエ級数は
でした。このフーリエ級数の最初の M 個の和のグラフを、 方形波のグラフと重ねたものを以下に紹介します。![]()
さて、三角波、ノコギリ波、方形波の音はかなり違った音であることは 前に紹介しましたが、 例えばノコギリ波に対して、それをフーリエ級数の部分和で徐々に近似 していくと、グラフは三角波から徐々にノコギリ波に近づいていきますが、 音としても三角波の音からノコギリ波の音に近づいていくでしょうか。 その途中の音はどんな音になると思いますか。
(12/17 2000)これは直接講義の内容とは関係ありませんが、ついでに作った音声データです。 元ネタは安野光雅さんの「算私語録」(朝日文庫) の 341 です。
例えば音がテープに録音されているとして、その先頭の位置を 0, 最後
の位置を 1 とします。1 から 0 に再生すれば、よくある逆回しになります。
それを、全体を 2 等分して、0.5 から 0, 1 から 0.5 と続けて再生すると、
前半分と後ろ半分は相変わらず逆回しのままですが、若干音の位置は
元の位置に近くなります。
さらに 4 等分して、0.25 から 0, 0.5 から 0.25, 0.75 から 0.5,
1 から 0.75 とするとそれぞれは相変わらず逆回しなのですが、
徐々に音が元の位置に戻って来て、段々元の音に近付いて行きます。
これを延々繰り返したらどうなるか、というのがそのお話です。
で、そこにはパリ在住のピョートル・コワルスキー (Piotr Kowalski)
という人がそれを行った、と書いてあります。
デジタルサンプリングされた音声データだと、何回かやると完全に 元のものと同じになってしまうので、本当はアナログデータでやらないと 面白味がないのですが、取りあえずそれをやってみたのが下のデータです。
元の音源は、音声データをフリーで公開している こえうぇぶ の音声データの 一部分、及びそれらをつなげたものを使用しています。
最初に聞こえるのが単なる逆回し、それを徐々に 2 分割、4 分割、 としていって、最後に聞こえるもの (65536 分割) が元のデータと 同じものです。
ただ難点は、元のデータが透明すぎて (特に母音だけの方)、最初のものが 全然逆回しに聞こえないことです (^^;
目次に戻る補講で紹介した、三角波以外の正規直交系のグラフを紹介します。
まずは
のグラフです。![]()
なお、ルジャンドル多項式は、次のような漸化式で計算することも できます。
コンピュータ等で計算する場合はこちらの方が実用的でしょう。 しかし、再帰的定義を使うと、大きい n に対してはあまり実用的では なくなりますので、再帰を使わないようにする必要があります。![]()
ルジャンドル多項式は次のように正規化されます。
この関数のグラフを紹介します。![]()
次は
です。漸化式は![]()
であり、次のようなものが正規直交系になります。![]()
この正規直交系のグラフです。![]()
最後は
です。漸化式は![]()
であり、次のようなものが正規直交系になります。![]()
この正規直交系のグラフです。![]()
いずれの正規直交系も、n が増える度に一つずつしわが増えるような関数系に なっていることがわかります。そしてエルミートやラゲール関数の場合には、 そのしわが段々全体に広がって行きます。 逆にいうと、関数系の完全性のためには、そういうしわが必要だということ になるのでしょうか。 三角関数系の場合も n が増えると段々しわが増えていき、周波数が増して いきますが、丁度それに対応します。
なお、数学辞典によると、ラゲール多項式は 0<x<∞ での広義積分の値の 数値計算で使われ、エルミート多項式は統計学でも使われるそうです。 ルジャンドル関数は、波動方程式やラプラス方程式と呼ばれる重要な方程式の 固有関数を数式であらわすことなどに使われます。
(02/20 2001)ついでに、フーリエ級数の例としてワイヤストラスの関数を紹介します。
ワイヤストラス (K.T.W.Weierstrass 1815-1897 独) は「厳密の権化」、 「近代解析学の父」と呼ばれたほど、解析学の色々な分野の厳密的な 仕事に関わった数学者ですが、次のような関数の例を構成しています。
連続だが、すべての点で微分可能でない関数が存在する「連続」はグラフがつながっていることを意味し、「微分可能でない」は グラフに接線が引けないこと、つまりグラフがとがったりしていることを 意味しています。 例えば、絶対値関数 y=|x| は連続ですが、x=0 では微分可能ではありません。
また、例えば次のような関数 (ディリクレの関数と呼ばれることもあります)![]()
はすべての点でとがっているようですが、これは連続ではありません。![]()
普通の「連続」な関数は、「微分可能」でない点は有限個しかありません。 しかし、ワイヤストラスは全ての点でグラフがとがっていて、かつ連続で あるような例を、フーリエ級数の形で与えました。
a=1/2, m=13 のとき、この級数の第 N 部分和 (n=1 から n=N までの和) のグラフは次のようになります。![]()
逆に考えると、フーリエ級数は、こんなとんでもない関数でも展開できて しまうほど、表現力、自由度が豊かだ、ということになります。 テイラー展開が無限回微分可能な関数でないと使えないのに比べると、 これは大きなメリットだといえるでしょう。 また、このグラフは、いわゆる "フラクタル" の例にもなっています。
なお、ワイヤストラスは 40 才までは中学校の先生をしていて、その後 大学の研究職についた人で、一流の数学者としては珍しく 大器晩成な人としても知られています。
(02/20 2001; 08/19 2008 修正)追加ですが、ついでに上のグラフの N=1, N=2, N=3 のグラフを tbl2snd を用いて音にしてみました (いずれもサンプリング周波数 11025Hz, 16bit linear WAV file)。
音の震えのようなものが徐々に増えていく感じが聞こえると思います。
(12/28 2009)妙なタイトルですが、少し変なことを考えつきましたので紹介します。
このページの上の方に、単純な音とそのグラフを紹介していますが、 具体的な音である、「あ」の音のグラフを紹介しましょう。
とげのようなもので構成されていて、グラフの様子がよくわかりませんが、 そのとげ一つ一つが基本周期部分です。 実際の音の場合は、 全く同じ形の基本周期がずっと繰り返されるわけではありませんが、 音質のあまり変わらない部分ではだいたい似た形の関数が繰り返されています。 上のグラフの一部を拡大して見てみます。
れいしうさんのグラフの方がきれいに同じ形のグラフが並んでいますが、 それは、れいしうさんの方が声が一定できれいな声であることと、 れいしうさんの声の方が高いことに原因があります。 同じ時間の「あ」でも、高い音の場合は周波数が高い、 すなわち基本波形の繰り返しが多く (れいしうさんのは 0.05 秒間で約 12 回、わたしのは 0.06秒間で約 9 回)、 声のように出だしから最後までの間に音が変化するものだと、 低い声の場合は少ない繰り返しでその変化を行わなければいけません。 よって、低い声の場合は同じ波形の繰り返しはあまり続きません。 (しかし、だからといって、低い声よりも高い声の方が聞きやすいことになる、 のかどうかは私にはわかりません)
もう少し拡大してその基本波形のグラフを見てみます。 基本波形 2 つ分くらいのグラフを紹介します。
実際には音のデジタルデータには、 グラフの青い点のところだけのデータが保存されていて (このデータの場合は 1/8000 秒毎)、 このグラフはその青い点を折れ線で結んでいるだけです。
さて、上の音は「「あ」の音」ですし、 そのグラフは「「あ」の音」のグラフなわけですが、 私はグラフを音声化するソフトを持っています。 それはグラフの高低を音程の高低で表現するソフトです。
これを使うと、このグラフを音にすることができます。 つまり「「あ」の音」の音です。 実際に、上の基本波形 2 つ分のデータを音にしたものが以下のデータです。ということは、同じことをさらに繰り返せば、 「「「あ」の音」の音」の音、「「「「あ」の音」の音」の音」の音、 とかできるのですが、 実は、「「「あ」の音」の音」の音より先はあまりおもしろくありません。
「「あ」の音」の音を聞いてみればわかるのですが、 これは単純な音、つまり三角波 (正弦波) を元にして作られています。 上のグラフを音声化するツールは、 グラフの高いところでは三角関数の周期を短くして高い音を作り (高さや波形は変えずに横幅だけ短くする)、 グラフの低いところでは逆に周期を長くして低い音を作っています。
つまり、「「「あ」の音」の音」のグラフは
三角関数のグラフと見た目がほとんど変わらず、
一番低いところと高いところの同じところを振動しているだけで、
その振動が速くなったり遅くなったりしているだけです。
ということは、「「「あ」の音」の音」の音は、
「三角関数のグラフ」の音
(
gnuplot グラフの音声化ツール tbl2snd のサンプル参照)
とほとんど同じになってしまいます。
(04/04 2006)
先日、TV 番組の「探偵ナイトスクープ」で、 「名探偵コナン」に出てきた DTMF 信号を人間の声で本当に再現できるか、 ということをやっていました。 DTMF 信号というのは、 プッシュホンの電話で電話の番号一つ一つに割り当てられている音で、 プッシュホンは実際にその音を送信することで番号を送っているのだそうです。 実際には DTMF は、以下のような 2 種類の音の「和音」として 構成されているようです。
| 低音\高音 (Hz) | 1209 | 1336 | 1477 | 1633 |
|---|---|---|---|---|
| 697 | 1 | 2 | 3 | A |
| 770 | 4 | 5 | 6 | B |
| 852 | 7 | 8 | 9 | C |
| 941 | * | 0 | # | D |
A,B,C,D はよくわかりませんが、 このような 2 種類の音の和音は、 「yomi」 の付属ツールである sndhz と sndmix, wavconn で簡単に作成ができます。 例えば、以下の通りです。
sndhz -c1 -wav -v0 440 200 > null.wav (0.2 秒の無音)このようにして作成した音声データを以下に置きます (0.8 秒の音声 + 0.2 秒の無音、モノラル、WAV, 22094 byte)。
sndhz -c1 -wav 697 800 > tmp.wav (0.8 秒、697Hz)
wavconn ./tmp.wav ./null.wav > 697.wav (それを連結した 1.0 秒データ)
sndhz -c1 -wav 1209 800 > tmp.wav
wavconn ./tmp.wav ./null.wav > 1209.wav (同様の 1209Hz, 1.0 秒データ)
sndmix 697.wav 1209.wav > dtmf-1.wav (和音データ)
dtmf-0.wav (0), dtmf-1.wav (1), dtmf-2.wav (2), dtmf-3.wav (3), dtmf-4.wav (4),
dtmf-5.wav (5), dtmf-6.wav (6), dtmf-7.wav (7), dtmf-8.wav (8), dtmf-9.wav (9),
dtmf-A.wav (A), dtmf-B.wav (B), dtmf-C.wav (C), dtmf-D.wav (D),
dtmf-ast.wav (*), dtmf-sha.wav (#)
実際に、この音声を PC で再生したものを手元の電話の通話口に聞かせてみたら、
本当につながりました。
ただ、ノイズの関係か、タイミングの問題か、
高低の音のバランスの関係かはわかりませんが、
実際につながるのは 3 回に 1 回程度のようでした。
(06/12 2009)
「ドレミファソラシド」の音階には、 それぞれの音に対応した周波数が割り当てられているのですが、 実はその割り当て方 (=音律) にはいくつかの方式があります。
現在日常的によく使われているのは「平均律」と呼ばれるものですが、 その他にも「ピタゴラス音律」「純正律」「中全律」などもあるようです。 詳しくは、例えば以下を参照してください。
音律の仕組みを最初に発見したのは、 三平方の定理でも有名なピタゴラスであるとされていて、 ピタゴラスは弦を弾いて音を出す場合、 弦の長さを半分にすると音が 1 オクターブ (半音 12 個分) 上がり、 1/3 にすると 1 オクターブと完全 5 度 (半音 12+7 個分、ドと 1 オクターブ上のソの関係) 上がることを発見しました。 これは周波数で言えば、周波数を 2 倍にすると 1 オクターブ、 3 倍にすると 1 オクターブと完全 5 度上がることを意味します。 この、「3 倍することで 5 度上げる」「半分にすることで 1 オクターブを下げる] という作業の組み合わせですべての音階を作成したのが「ピタゴラス音律」です。
ピタゴラス音律の場合の「ド、レ、ミ、ファ、ソ、ラ、シ、ド」の周波数の比は 以下のようになります。
1, 9/8, 81/64, 4/3, 3/2, 27/16, 243/128, 2ただし、ファの音だけは、3n/2m の形をしていませんが、 それは分子、分母が大きくなりすぎないように、 上のドから逆に 5 度下げることでファを得ているために 4/3 となっています。
しかし、和音は簡単な整数比の音の方がまざりやすいのですが、 ピタゴラス音律はミ、ラ、シの周波数の分母が大きいため、 それを含む和音が綺麗にまざり合いにくい、という欠点があります。 それを改良したのが「純正律」で、それは以下のような比率になっています。
1, 9/8, 5/4, 4/3, 3/2, 5/3, 15/8, 2しかし、純正律は転調すると比が合わなくなりますので、 楽譜の調に合わせて調律を変えなければいけませんし、 曲中の転調には対応できません。 そこで作られたのが「平均律」で、 これは半音間隔をすべて等分にしたものです:
1, a2, a4, a5, a7, a9, a11, 2これはいずれも整数比ではないので、 和音には必ずうなりが含まれることになりますが、 例えば調を簡単に変更できないピアノなどは平均律に調律されています。 この他にも、前掲書によれば「中全律」なるものもあるようです:
(a=21/12)
1, b2/2, 5/4, 2/b, b, b3/2, b5/4, 2以上は長音階ですが、短音階 (自然短音階:「ラ、シ、ド、レ、ミ、ファ、ソ、ラ」) では以下のようになります。
(b=51/4)
これを小数で書くと以下のようになります。
| 長音階 | ||||
|---|---|---|---|---|
| ピタゴラス | 純正律 | 平均律 | 中全律 | |
| ド | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| レ | 1.125000 | 1.125000 | 1.122462 | 1.118034 |
| ミ | 1.265625 | 1.250000 | 1.259921 | 1.250000 |
| ファ | 1.333333 | 1.333333 | 1.334840 | 1.337481 |
| ソ | 1.500000 | 1.500000 | 1.498307 | 1.495349 |
| ラ | 1.687500 | 1.666667 | 1.681793 | 1.671851 |
| シ | 1.898438 | 1.875000 | 1.887749 | 1.869186 |
| ド | 2.000000 | 2.000000 | 2.000000 | 2.000000 |
| 短音階 | ||||
| ピタゴラス | 純正律 | 平均律 | 中全律 | |
| ラ | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
| シ | 1.125000 | 1.125000 | 1.122462 | 1.118034 |
| ド | 1.185185 | 1.200000 | 1.189207 | 1.196279 |
| レ | 1.333333 | 1.333333 | 1.334840 | 1.337481 |
| ミ | 1.500000 | 1.500000 | 1.498307 | 1.495349 |
| ファ | 1.580247 | 1.600000 | 1.587401 | 1.600000 |
| ソ | 1.777778 | 1.800000 | 1.781797 | 1.788854 |
| ラ | 2.000000 | 2.000000 | 2.000000 | 2.000000 |
普通に音階を聞くだけではあまり違いがわからないと思いますが、 重ねたり、和音にするとうなりによってその違いなどがわかります。 そのような音のサンプルを yomi のツールで作ってみましたので、 以下に紹介します。 いずれも WAV ファイル (サンプリング周波数 11025Hz) です。 なお、基音をド位 (262Hz) にしてハ長調、イ短調の音階にすると、 下の方の音がやや低すぎて音が小さく聞こえるので、 基音をファ位 (349Hz) にしてヘ長調、ヘ短調にしてあります。
同じ音を重ねたものは、違いがうなりとして聞こえるのでよくわかると思います。 うなりがゆるやかなほど音が近く、 うなりが早いほど音が離れていることを意味しています。
また、ドミソとドファラの和音は純正律が一番響きがよく、
後は多分ピタゴラス、中全律、平均律の順に響きが悪くなっているはずですが、
違いはわかるでしょうか。
(02/01 2010)
楽器や声などの現実の音は、はっきりある音程に聞こえる音でも、 単音ではなくて複数の音の重ね合わせで作られていることが知られています。 特に、特定の音程が出せる楽器の場合は、 その重ね合わせは、その音程を基音として、 基本的にはその音のオクターブ上の音が順に重ね合わされています。
つまり、ある音にその音の丁度オクターブ上の音を重ねると、 それは「複数の音からなる和音」ではなく、 「音色のついた一つの音」として聞こえることになります。 重ね合わせる各音をどのような大きさにするかで、 その音の「音色」が決まるわけです。
なお、別な音程の音が重なれば「和音」になってしまうわけですが、 実際には楽器の音などは丁度オクターブ上の同じ音だけが重なっているわけではなく、 基音の 2 倍 (1 オクターブ上)、3 倍、4 倍 (2 オクターブ上)、5 倍、... といった周波数の音、いわゆる「倍音」が重なっています。 それは楽器の構造、音の出る仕組みからそのようになっています。
ところで、これに関して、ふと 「人間の耳はその音色に関して位相のずれを認識しているのか」 ということが気になりました。
例えば、ある周波数ωの単音 A sin(2πωt) (t は時刻、A は振幅) に対して、その 1 オクターブ上の音は
B sin(4πωt) + C cos(4πωt) = D sin(4πωt+θ) (D = (B2+C2)1/2)の形で表されますが、この音は cos の成分のために元の音 A sin(2πωt) と位相がθだけずれています。 この場合、もちろん
A sin(2πωt) + D sin(4πωt+θ)と
A sin(2πωt) + D sin(4πωt)とはグラフは別なものになりますが、 人間の耳はこれを別の音として認識するのだろうか、 というのが私の疑問です。
人間の耳は、蝸牛によって音を周波数分解して認識しています。 ということは人間は位相のずれは理解せず、 上の 2 つを同じ音として聞いているのではないか、 というのが私の予想でした。 それで以下のようなデータを作って試してみました。
c1.wav は 1 ブロックが 1/21.12 周期なので、 10 ブロックのずらしでほぼ元の c1.wav の逆位相の音になります。 0 から 9 ブロックのずらしでだいぶ異なったグラフができると予想されます。 実際にそれによって作成した音声データと、 その重ね合わせ音声のグラフを以下に示します。
グラフを見ればわかりますが、音声データの形自体はだいぶ違います。 しかし、音声の方は音色の違いは全くないように聞こえます (少なくとも私には)。 つまり、音を重ね合わせるときは、 位相のずれは考えずに重ねても人間には同じに聞こえる、 逆に言えば人間は重ね合わされた音の位相のずれまでを認識しているわけではない、 ということになると思います。
よって、フーリエ変換して音声データから各周波数成分 (スペクトル) を取り出す場合、 sin(nx) の係数 an と cos(nx) の係数 bn を別々に評価することは意味がなく、 それらの自乗和の平方根 (いわゆる「パワースペクトル」)
An = (an2 + bn2)1/2を取り出して評価すべきだということになるように思います。