信号処理

PyAudio/threading/Matplotlibでリアルタイム音声処理

 Pythonを使えば、リアルタイムの音声録音と解析も簡単に行えます。まずPyAudioで音声を録音し、次にScipyでFFT(高速フーリエ変換)を使って解析を行います。しかし、これをスムーズに行うには並列処理が欠かせません。ここでは、Pythonのthreadingモジュールを駆使して、リアルタイムで音声を録音しながらFFT結果を表示する方法を紹介します。

続きを読む

Python/librosaのピッチシフトで音楽のキーを変更する方法

音声のピッチ(音程)を変える方法の1つにピッチシフトという方法があります。Pythonのlibrosaというライブラリを使えば数行のコードでピッチシフトを行うことが可能です。ここではサンプルの音楽ファイルを使ってlibrosaのピッチシフトを使う方法を紹介します。

続きを読む

Python/SpeechRecognitionで音声認識してみた

機械学習で有名なPythonを使って「音声認識」をしてみます。今回は初心者が最も導入しやすいSpeechRecognitionをインストールし、Googleのサービスを使ったGoogle Speech Recognitionによる音声認識プログラミング事例を紹介します。

続きを読む

SwiftUIで録音した音声を平均化FFTするアプリをつくってみた

今回もiOSアプリ制作シリーズです。これまで学んだ録音・再生・フーリエ変換・オーバーラップ・窓関数・聴感補正・dB変換を全部盛りにしてSwiftUIによる平均化FFTを実行するアプリを作ってみます。まずは個別のコードを紹介し、最後にコピペ可能な全コードを載せて実行結果を説明します。

続きを読む

回転機の振動シミュレーションで回転パルスを設定してみた

先日の記事で回転機のアンバランス振動シミュレーションをPythonで行いました。振れ回り振動と参考書の対応がとれたので、次はより詳細な分析を行うために回転パルス(基準信号)をシミュレーションで設定してみます。ここではPythonのodeintで基準パルスを設定しながらアンバランス振動のシミュレーションを行う方法を紹介します。

続きを読む

Swiftで時間波形をオーバーラップ抽出するコード

長時間の信号処理を行う場合、信号を細かくフレームに区切り、さらにフレームを重ねながら信号を抽出するオーバーラップという手法があります。過去にPythonで実装したこのオーバーラップ処理を、今回はiOSアプリで動作させるためにSwiftで実装する方法と検証結果を紹介します。

続きを読む

Swiftで高速フーリエ変換(FFT)を実装する方法

iOSデバイスで高速フーリエ変換を実装する方法を紹介します。この記事では、まずはじめに一般的な高速フーリエ変換(FFT)であるCooley-Tukey法をSwiftで検証し、その後Accelerateというライブラリによる実装方法も併せて紹介します。

続きを読む

Pythonで高速フーリエ変換をCooley-Tukey法で書く

PythonにはNumPyやSciPyによる優秀な高速フーリエ変換(FFT)アルゴリズムがありますが、基本的なFFTの仕組みを学習するにもPythonは最適です。ここでは最も一般的なFFTアルゴリズムであるCooley-Tukey法をPythonのNumPyで記述し、numpy.fftの結果と比較します。さらに、データ点が2の冪乗でない場合のゼロパディング処理も実装します。

続きを読む

Pythonで検証しながらSwiftで離散フーリエ変換を実装する

離散フーリエ変換は単純な式で実装できる信号処理アルゴリズムです。Pythonは豊富なライブラリについ頼ってしまいますが、他の言語でも自由に実装できるように基本を学びましょう。ここではPythonであえてforループを使った離散フーリエ変換の方法を学び、次に同様の結果が得られるSwiftコードを紹介します。

続きを読む