【自作量子コンピュータ NMRQCP】部屋の中の音を読み込んでFFT!
こんにちは!自作の地球磁場NMR(EFNMR)方式で量子コンピューターの開発に挑戦している高専生です。
これまでハードウェア(回路)の製作を進めてきましたが、今回はその回路で拾ったアナログ信号をいよいよPCに取り込み、ソフトウェア(Python)で解析するテストについてお話しします!
微小な信号をPCへ!高解像度サウンドカードの導入
自作の受信コイルで拾った微小なアナログ信号は、そのままではPCで扱えないため、デジタル処理するためのADC(A/Dコンバータ)を通す必要があります。
今回は量子からの繊細なメッセージを逃さないよう、高解像度なサンプリングを行うための「96KHz / 24-bit Hi-Fi USB接続外付けサウンドカード」を採用しました。
接続方法はシンプルで、アナログ回路からの出力を「汎用シールドBNCケーブル」に通し、「BNCプラグ → 3.5mmモノラルプラグ 変換アダプタ」を用いて、このサウンドカードのマイク入力(またはライン入力)へ繋いでいます。
Pythonで自作する「リアルタイムFFTアナライザー」
ハードウェアが繋がったら、次はこの音声波形を読み込むためのPythonスクリプトの作成です。
音声入力ライブラリである「PyAudio」を用いてサウンドカードからのデータストリームを取得し、「NumPy」を使って一定間隔で高速フーリエ変換(FFT)を計算、「Matplotlib」でグラフに描画するプログラムを書きました。
# 窓関数(ハミング窓)をかけて両端のノイズを減らす
window = np.hamming(CHUNK)
fft_data = np.abs(np.fft.rfft(audio_data * window))
コードの一部ですが、このように「ハミング窓」と呼ばれる処理をかけて、波形の両端のノイズを減らす工夫なども盛り込んでいます[span_6](start_span)[span_6](end_span)。
実験結果と、思わぬ「強敵」の出現
実際に回路を動かし、プログラムを実行してみた結果がこちらです!
画面に「EFNMR Real-time FFT Analyzer」としてグラフが正常にプロットされました!PC側で周波数(Frequency)ごとの振幅(Amplitude)を解析できるシステムが、しっかりと機能していることを確認できました。信号の取り込み自体は大成功です。
しかし、グラフをよく見ると環境ノイズと思われる低周波帯のピークなどが可視化されてしまっています。システムが優秀すぎるのか、人の声や少しの物音にまで敏感に反応してしまうことが分かりました。
量子コンピューターの実験には「静寂」が必要不可欠のようです。これからは、誰もいない静かな部屋で実験をやるなどの工夫が必要になりそうです。
ついにハードウェアとソフトウェアが繋がり、プロジェクトが一気に前進しました!
- 日々の実験メモやコード: GitHubリポジトリ(nmr-qc-project) に公開中
- リアルタイムの開発風景・オシロスコープ波形: X(旧Twitter) でポスト中
「本当に動くのか?」「どうやって波形を出すのか?」など、気になった方はぜひブログのブックマークやXのフォローをお願いします!

コメント
コメントを投稿