NAudioで音声ファイルを再生する方法

公開日: 2025年2月13日

ラベル: プログラミング

 今回はC#でNAudioを取り扱い、音声ファイルを再生するまでを解説してみたいと思います。

Visual Studioで作成しております。プロジェクトは作成済みとして解説します。

前回のブログ記事は「お気に入りのコーヒーミルについて」です。

NAudioのインストール方法

まずプロジェクトにNAudioをインストールします。手順は下記の通りです。

  1. VisualStudioの上部から「ツール」→「NuGetパッケージマネージャー」→「ソリューションのNuGetパッケージの管理」の順で押下します

  2. 「参照」にある入力欄に「NAudio」を入力し検索します。表示された「NAudio」を選択し、プロジェクトにチェックが入っていることを確認し「インストール」を押下します
  3. 「変更のプレビュー」が表示されたら「適用」を押下します

以上でインストールは完了です。


音声ファイルの準備

再生したい音声ファイルを準備します。

今回は「AudioFile」というフォルダを作り、その中にファイルを格納しました。またファイルのプロパティから「出力ディレクトリにコピー」を「新しい場合にコピーする」に設定します。


実装

音声ファイルを再生するコードを実装します。

private readonly string audioFilePath = @"AudioFile\music.mp3";

private AudioFileReader audioFileReader;
private WaveOut waveOut;

public MainWindow()
{
    InitializeComponent();

    audioFileReader = new AudioFileReader(audioFilePath);

    // 音量設定
    audioFileReader.Volume = 0.1f;

    waveOut = new WaveOut();
    waveOut.Init(audioFileReader);

    // 再生終了時イベント
    waveOut.PlaybackStopped += WaveOutPlaybackStopped;

    // 再生する
    waveOut.Play();
}

private void WaveOutPlaybackStopped(object? sender, StoppedEventArgs e)
{
    // ループ再生する
    audioFileReader.Position = 0;
    waveOut.Play();
}

上記のコードでは

  • 「音量設定」で音量を設定しています
  • 「再生終了イベント」で、音声ファイルの再生が終了した際の処理を登録しています。再生終了イベント処理内では、ポジションを先頭に戻し再生を行うことにより、ループ再生するようにしてあります
となっています。

本コードを実装したうえで、実行すると音声ファイルが既定の出力デバイスで再生されます。

もしPCに複数の再生デバイスが接続されており、再生デバイスを変えたい場合は、「WaveOut」の「DeviceNumber」の値を変更してください。「waveOut = new WaveOut();」の次の行で「waveOut.DeviceNumber = 1;」などとすると再生デバイスが変わるはずです。

また、デバイス名などの情報が必要な場合は、

// デバイス情報を取得する
for(int index = 0; index < WaveOut.DeviceCount; index++)
{
    WaveOutCapabilities capabilities = WaveOut.GetCapabilities(index);

    // capabilitiesから必要な情報を抽出する
}

などとすると、取得することができます。


最後に

今回はNAudioで音声ファイルを再生する方法を、NAudioのインストールから実装までにわけて解説しました。

少しでも参考になれば幸いです。

このブログを検索

自己紹介

kamo
kamoと申します。 プログラミングやDIYなど、何か作ったりすることが好きな者です。 プログラミングはC言語やC#、Javaあたりに理解があります。 よろしくお願いします。
詳細プロフィールを表示