#33

標本化と量子化(音をデジタルにする)

サイン波を一定間隔で測り(標本化)、整数に丸める(量子化)様子を棒で表示します。

解説

マイクで拾った音はなめらかに変化するアナログ信号です。これをコンピュータに記憶させるには2つの段階でデジタル化します。 1つ目が「標本化(サンプリング)」:時間を細かく区切って一定間隔で値を測ります。2つ目が「量子化」:測った値を決まった段数(ここでは0〜7の8段階)の整数に丸めます。 mathのsinでサイン波を作り、16点で標本化し8段階に量子化して棒グラフで表示します。なめらかな波が数値の列に変わる様子が、音や画像をコンピュータが扱える仕組みそのものです。

書き方

音のデジタル化 = 標本化(一定間隔で値を測る)→ 量子化(決まった段数の整数に丸める)。
・import math で数学モジュールを読み込み、math.sin / math.pi を使う。
・round(値) で四捨五入して整数の段に丸める。
・"#" * 回数 で文字をくり返し棒グラフを作る。
・f"{i:2d}" や f"{wave:+.3f}" で桁数・符号・小数桁を指定して整形。

書いて動かす

この回の課題

サイン波を16点で標本化し0〜7の8段階に量子化して、量子化値と # の棒グラフで波がデジタルの数値列に変わる様子を見よう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

もっと本格的に使うなら

Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。