print("すでに録音中です。print("録音は開始されていません。threading.Thread(target=record_control)record_control_thread.start()このスクリプトは、threadingモジュールを使用して、録音制御と録音処理を別々のスレッドで実行します。ユーザーがキーボードで’s’を入力すると録音が開始し、’q’を入力すると録音が停止します。is_recording変数は録音の状態を制御します。録音中はTrue、停止中はFalseです。ファイルの保存先ラズベリーパイで開発している場合、録音されたデータ(output.wav)は、スクリプトが実行されているディレクトリに保存されます。通常、これはスクリプトファイルが存在する同じフォルダーです。値をフルパスで指定します。フォルダにファイルが保存されます。フォルダは予め作成しておく必要があります。パスはラズベリーパイ上での実際のディレクトリ構造に合わせて調整してください。保存されたファイルにアクセスするには、ラズベリーパイのファイルマネージャーを使用するか、コマンドラインから直接アクセスします。録音されたファイルを再生するには、ラズベリーパイで対応するオーディオプレーヤーを使用します。ようにコマンドを実行することで再生できます(ただし、aplayはPCMフォーマットのファイルのみサポートします)。現場で一番困ることといえばデータの保管です。安全が確保されたスタジオであればいいですが、ロケや海外での収録などは、ハードで保管して持ち歩いているとハイリスク。治安の悪い地域などでしたら盗難や強盗のリスクも忘れないでください。アルゼンチンでタンゴを録音する場合は必ず何らかのバックアップは必要です。App」を選択します。Dropbox)を選択し、アプリに名前を付けます。token」を選択してトークンを生成します。このトークンは後でPythonスクリプトで使用します。SDKをインストールします。dropbox_file)このスクリプトは、指定されたローカルファイルをDropboxにアップロードします。アップロードするファイルのパスとDropbox上の目的のパスを適切に設定してください。dBにノーマライズノーマライズ作業もPythonで終わらせておくと、編集の際に便利です。ライブラリがこの種の処理に適しています。インストールする必要があります。dBにノーマライズして別のファイル名で保存します。オーディオファイルを読み込みます。関数でオーディオをノーマライズします。パラメータで目標のdBFSを指定します。ノーマライズされたオーディオを指定したファイル名で保存します。ファイル名を自動で生成ファイル名も自動でつけてしまいましょう。日付に加えて時刻をつけておくことで、take番号よりも把握しやすいケースが筆者は多かったので、時刻を取得してつけておきます。ライブラリを使用して現在の日付と時刻を取得し、それをファイル名の一部として組み込むことができます。frames.append(data)print("録音が終了しました。使用して現在の日付と時刻を取得します。形式にフォーマットします。このスクリプトは、録音が終了すると、現在の日付と時刻をファイル名に含んだWAVファイルを保存します。すべての統合コードそれでは、録音スクリプト(キーボードでスタートとストップを操作)に加えて録音が終了したら自動でノーマライズし、”今日の日付”と”録音終了時の時刻”のファイル名でDropboxとオフラインのパス(一般的なパス名にしています)に保存する統合コードを書いていきましょう。print("録音を開始します。押して録音を停止してください。ノーマライズを開始します。Dropboxにアップロードされました。print("すでに録音中です。print("録音は開始されていません。押すと録音が停止します。録音が終了すると、ファイルは指定されたフォーマットで保存され、その後、ノーマライズされます。形式でローカルに保存され、Dropboxにもアップロードされます。Linuxシステム(ラズベリーパイを含む)でオーディオ設定を行うためのコマンドラインツールです。これらを使用してオーディオレベルや入力デバイスを設定する方法を以下に説明します。ユーザーフレンドリーなテキストベースのグラフィカルインターフェースを提供します。alsamixerを開くにはターミナルで以下のコマンドを実行します。押して利用可能なサウンドカード(オーディオデバイス)のリストを開きます。使用したいオーディオデバイス(例えば、外部USBオーディオインターフェイス)を選択します。矢印キー(←/→)を使って、調整したいチャンネル(例えば「Master」や「PCM」)を選択します。矢印キー(↑/↓)を使って、音量を調整します。ターミナルで以下のコマンドを実行して、設定を保存します。コマンドラインから直接オーディオ設定を行うためのツールです。音量を設定したいコントロール(例:PCM)の音量を変更するには、以下のようなコマンドを使用します。50%マイク入力の有効化/無効化マイクのミュート(無効化)やアンミュート(有効化)を行うには、以下のようにします。使用してラズベリーパイで録音アプリケーションのGUIを作成するには、以下のステップに従って進めます。ここでは、基本的な録音コントロール(録音開始、停止)とステータス表示を含むGUIの例を示します。Pythonに標準で含まれているGUIツールキットです。これを使用してGUIを作成します。GUIの基本構造の作成GUIのウィンドウ、ボタン、ラベルなどのウィジェットを作成し、レイアウトします。録音機能をGUIに統合し、ボタン操作で録音を開始・停止できるようにします。以下は、録音と停止のボタンを持つ簡単なGUIの例です。クラスは録音の機能とGUIを管理します。録音は別のスレッドで行われ、GUIの応答性を保持します。「録音開始」と「録音停止」のボタンをクリックすることで、録音を制御します。録音状態はラベルで表示され、録音が完了するとファイルに保存されます。ラズベリーパイで開発したPythonベースのオーディオ録音アプリケーションをデプロイするには、いくつかのステップを踏む必要があります。ここでは、アプリケーションをラズベリーパイにインストールし、実行可能な形で配置するための基本的な手順を説明します。コードの最終化アプリケーションのコードを最終確認し、必要に応じて最後の修正やテストを行います。)がラズベリーパイにインストールされていることを確認します。開発環境からラズベリーパイにスクリプトを転送します。Protocol)、または直接USBドライブを介して行うことができます。実行権限の付与スクリプトファイルが実行可能であることを確認します。ターミナルで以下のコマンドを実行します。サービスを設定します。myapp.serviceまとめ今回はラズベリーパイを使ってハイレゾレコーダーを自作するサンプルコードを紹介しました。保存場所や、WIFIを使った機能の追加など、市販品ではなかなか難しいレコーダーを自作して、現場の業務を安全かつ円滑に進められるように工夫していってください。