猿橋賞に輝いた上川内あづささんの昆虫聴覚研究と、Pythonで表現する音の周波数分析
猿橋賞、この名を聞くと、日本の女性科学者の輝かしい功績を思い浮かべます。今回、栄えある猿橋賞を受賞されたのは、名古屋大学の上川内あづささん。昆虫の聴覚情報処理機構の解明という、非常に興味深い研究テーマに取り組んでいらっしゃいます。
昆虫の聴覚、と言われても、なかなかピンと来ない方も多いかもしれません。しかし、昆虫たちは、捕食者から身を守るため、仲間とコミュニケーションを取るため、配偶者を見つけるためなど、様々な目的で音を感知し、利用しています。上川内さんの研究は、特に、ガの仲間がどのように複雑な音を識別し、危険を回避しているのか、その脳のメカニズムに迫るもの。音の周波数成分を分析し、特定の周波数帯域に反応する神経細胞の存在を明らかにするなど、その成果は目覚ましいものです。
このニュースに触発され、私たちも少しだけ、音の世界を覗いてみましょう。音の分析といえば、周波数分析が欠かせません。音は様々な周波数の波が混ざり合ってできており、その周波数成分を調べることで、音の特徴を捉えることができます。
そこで、今回はPythonを使って、簡単な周波数分析のスクリプトを作成してみました。このスクリプトは、録音された音声データ(wavファイル)を読み込み、高速フーリエ変換(FFT)を使って周波数成分を解析し、グラフとして表示します。
import numpy as np
import matplotlib.pyplot as plt
import scipy.io.wavfile as wavfile
def analyze_audio(filename):
# WAVファイルの読み込み
sample_rate, data = wavfile.read(filename)
# データの長さ
N = len(data)
# 時間軸の作成
time = np.arange(N) / sample_rate
# 周波数軸の作成
freq = np.fft.fftfreq(N, d=1/sample_rate)
# FFTを実行
yf = np.fft.fft(data)
xf = freq
# 片側表示にする
xf = xf[:N//2]
yf = np.abs(yf[:N//2])
# グラフの描画
plt.plot(xf, yf)
plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude")
plt.title("Frequency Spectrum")
plt.grid()
plt.show()
def main():
# 例:example.wavという音声ファイルを解析
filename = "example.wav" # ここに解析したいwavファイルのパスを指定してください
try:
analyze_audio(filename)
except FileNotFoundError:
print(f"Error: File '{filename}' not found.")
except Exception as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
main()
このスクリプトを実行するには、scipy
、numpy
、matplotlib
といったライブラリが必要です。まだインストールしていない場合は、以下のコマンドでインストールできます。
pip install scipy numpy matplotlib
また、解析する音声ファイル(example.wav
)を用意し、スクリプトのfilename
変数にそのパスを指定してください。
注意: このスクリプトは非常に単純な例であり、実際の音響分析では、窓関数を適用したり、より高度な信号処理技術を用いる必要があります。
この簡単なスクリプトを通して、音の周波数成分という概念を少しでも理解していただければ幸いです。上川内さんの研究は、このような周波数分析をさらに高度化し、昆虫の脳内でどのように音の情報が処理されているのかを解明する、非常に奥深いものなのです。
上川内さんの受賞は、女性科学者のロールモデルとして、次世代の研究者を志す多くの人々に勇気と希望を与えるでしょう。今後のご活躍を心から応援しています。そして、私たちも、科学の進歩に少しでも貢献できるよう、日々研鑽を積んでいきたいものです。
自己紹介
Pythonのレッスンを受けたいという方、お待ちしています!
https://coconala.com/services/3190048
Xアカウントはこちら
レッスン概要
◯完全オンライン
◯翌日までには必ず返信
◯挫折しない独自の学習メソッド
◯圧倒的高評価!!
◯テキストベースで時間を選ばない
◯高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!
