0

Python 3.6 Ubuntu 18.04

pyaudio モジュールを使用して、スピーカーから出力されるオーディオを正常に録音し、テストのために、それを WAV ファイルに正しく保存できました。これは、はるかに大規模なマルチスレッド アプリケーションの一部であるため、調整が計画どおりに機能していることを嬉しく思います。ここで、データに対してオーディオ分析を実行して、オーディオに存在する支配的な周波数を収集したいと考えています。だから、私はいくつかの質問があります.1つは興味があるのでより一般的なもので、もう1つは私の問題に特化したものです:

1.) オーディオ フレームをキャプチャするために使用するコードのスニペットを次に示します。

    self.audio_stream = self.audio_stream_parent.open(
        format=AUDIO_FRAME_FORMAT,
        channels=AUDIO_FRAME_CHANNELS,
        rate=AUDIO_FRAME_RATE,
        input=True,
        frames_per_buffer=AUDIO_FRAME_SIZE_BYTES
    )
    ...
    while self.keep_audio_collection_thread_alive:
        audio_frame = self.audio_stream.read(AUDIO_FRAME_SIZE_BYTES)
        if self.collect_audio and audio_frame:
            self.audio_collected.put(audio_frame)

audio_frame私の最初の質問は、変数でどのようなデータが表されているかということです。読み取り操作ごとに 4096 バイトのリストが返されます ( AUDIO_FRAME_SIZE_BYTES1024 に設定されていますが)。これは実際には何を表しているのでしょうか? それはすべて純粋な音声データであり、チャンネル数やフォーマットなどを後で再解釈するために提供する必要がありますか? それとも4096バイトにそのような情報が含まれているのでしょうか?

2.) このデータに対して周波数分析を実行する最良の方法は何ですか? WAV ファイルのコンテンツに対して FFT を実行する最良の方法について多くの情報を目にしますが、これをリアルタイムで、またはほぼリアルタイムで実行したいと考えています。読み書きを同時に行うために WAV ファイルを開く方法がわからないので、基本的にそこを通過することはできません。の生データに対してこの分析を実行できますaudio_frameか? 実際にWAVファイルに書き込むことなく、このSO回答の一般的なロジックに従うことができるかどうかを確認するために、最初の質問をしたのはそのためだと思います。

前もって感謝します!

4

0 に答える 0