Delphi 10 Seattleで音声を録音するには

Delphi 10 Seattleで音声を録音する方法を紹介します。

FMX.Media.TAudioCaptureDevice

録音には、FMX.Media.TAudioCaptureDeviceクラスを使用します。

TAudioCaptureDeviceオブジェクトは、TCaptureDeviceManagerクラスのDefaultAudioCaptureDeviceメソッドを使用して取得します。

FMicrophone := TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;

録音を開始するには、StartCaptureメソッドを使用します。

FMicrophone.StartCapture;

録音を停止するには、StopCaptureメソッドを使用します。

FMicrophone.StopCapture;

録音中かどうかは、Stateプロパティで判定できます。

サンプルアプリケーション

音声を録音するサンプルアプリケーションを作成します。

フォームに、TMemoコンポーネント・MediaPlayerコンポーネント・TButtonコンポーネントを3つ配置します。

form-1

private変数を追加します。

private
  { private 宣言 }
  FMicrophone: TAudioCaptureDevice;

音声ファイルのファイル名を取得するメソッドを作成します。

private
  { private 宣言 }
  function GetAudioFileName: string;

uses System.IOUtils;

function TForm1.GetAudioFileName: string;
const
{$IF DEFINED(ANDROID) OR DEFINED(IOS)}
  AUDIO_FILENAME = 'temp.caf';
{$ELSE}
  AUDIO_FILENAME = 'temp.wav';
{$ENDIF}
begin
  Result := TPath.Combine(TPath.GetDocumentsPath, AUDIO_FILENAME);
end;

フォームのOnCreateイベントでTAudioCaptureDeviceオブジェクトを作成します。

procedure TForm1.FormCreate(Sender: TObject);
begin
  FMicrophone := TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;
  if not Assigned(FMicrophone) then
  begin
    Memo1.Lines.Add('音声キャプチャデバイスを使用できません。');
    Exit;
  end;
  FMicrophone.FileName := GetAudioFileName;
end;

録音ボタンを押すと、録音を開始します。

procedure TForm1.ButtonStartClick(Sender: TObject);
begin
  if Assigned(FMicrophone) then
  begin
    FMicrophone.StartCapture;
    Memo1.Lines.Add('録音を開始しました。');
  end;
end;

停止ボタンを押すと、録音を停止します。

procedure TForm1.ButtonStopClick(Sender: TObject);
begin
  if (Assigned(FMicrophone)) and
    (FMicrophone.State = TCaptureDeviceState.Capturing) then
  begin
    FMicrophone.StopCapture;
    Memo1.Lines.Add('録音を終了しました。');
  end;
end;

再生ボタンを押すと、録音したファイルを再生します。

procedure TForm1.ButtonPlayClick(Sender: TObject);
begin
  if TFile.Exists(GetAudioFileName) then
  begin
    MediaPlayer1.FileName := GetAudioFileName;
    MediaPlayer1.Play;
    Memo1.Lines.Add('再生を開始しました。');
  end;
end;

Androidで実行するには、権限の追加が必要です。
プロジェクトオプションの「使用する権限」を選択して「音声の録音」にチェックを入れます。

form-2

以上で完成です。

実機で実行して動作を確認してください。

androidiphone

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください