ホームページ  >  記事  >  バックエンド開発  >  Pythonでオーディオの長さを取得するにはどうすればよいですか?

Pythonでオーディオの長さを取得するにはどうすればよいですか?

WBOY
WBOY転載
2023-09-02 18:53:051258ブラウズ

Pythonでオーディオの長さを取得するにはどうすればよいですか?

オーディオ処理の分野は近年大幅に拡大しており、オーディオ操作に関連するタスクを処理するには Python が一般的な選択肢となっています。オーディオを扱うときの一般的なタスクの 1 つは、オーディオ ファイルの長さを決定することです。これは、プレイリストの作成、オーディオ データ分析、オーディオ編集ツールの開発など、さまざまなアプリケーションで役立ちます。

この記事では、Python を使用してオーディオの長さを取得するための、基本的なものから高度なものまで、さまざまなテクニックについて説明します。途中で実際のコード例も提供されます。この主題では、オーディオ処理に関連する基本的な概念と用語を理解することが重要です。これにより、この記事で後ほど説明するさまざまなアプローチを実装するために必要な基礎が得られます。まず、オーディオの長さの定義から始めましょう。次に、それを計算するための構文とアルゴリズムを調べます。

「オーディオ継続時間」という用語は、オーディオ ファイルの再生時間の長さを指し、通常は秒または分で測定されます。この値は、サンプル数、チャンネル、サンプル レートなど、オーディオ ファイルを定義する一連の特性の影響を受けます。この知識を完全に把握することは、文字起こし、分析、オーディオ編集などのさまざまなアプリケーションにとって重要です。

構文

Python は、オーディオ ファイルの処理を管理するためのさまざまなライブラリを提供します。これらのライブラリには、wave、pydub、librosa が含まれており、それぞれがオーディオ ファイルをアップロードし、その長さを測定するための独自の構文と関数を備えています。オーディオ ファイルの長さを決定する一般的なプロセスには、次の手順が含まれます。

  • 必須ライブラリをインポートします。

  • 音声ファイルを読み取ります。

  • ファイルの特性 (サンプル レート、サンプル数、チャンネル数など) を抽出します。

  • 抽出された特徴を利用して継続時間を計算します。

###アルゴリズム###

Python でオーディオ ファイルの長さを取得するには、次のアルゴリズムを実装できます -

    音声ファイルをアップロードするために適切なライブラリを実装します。
  • サンプリング レート、チャンネル数、フレーム数など、オーディオ ファイルの関連する特徴を抽出します。
  • フレーム数をサンプル レートで割ることにより、オーディオ ファイルの長さを計算します。
  • 出力するか返すことにより、期間の値を出力します。
  • アプローチ

ここでは、Python でオーディオ ファイルの長さを決定するためのいくつかの手法を検討します。次の方法が導入されます-

    Wave ライブラリを利用する。
  • pydub ライブラリを使用します。
  • librosa ライブラリを使用します。
  • ffmpeg-python ライブラリを使用します。
  • 方法 1: Wave ライブラリを使用する

wave ライブラリは、WAV ファイルのサポートを提供する Python の組み込みモジュールです。これは、wave ライブラリを使用してオーディオ ファイルの長さを取得する方法を示す完全なコード例です -

###例### リーリー ###出力### リーリー

アプローチ 2: pydub ライブラリの使用

pydub ライブラリは、オーディオの操作に一般的に使用され、使いやすいツールとして機能します。pydub を利用するには、まず pip install pydub 経由でインストールする必要があります。継続時間を取得するコード例は次のとおりです。 pydub を使用する −

import wave
def get_duration_wave(file_path):
   with wave.open(file_path, 'r') as audio_file:
      frame_rate = audio_file.getframerate()
      n_frames = audio_file.getnframes()
      duration = n_frames / float(frame_rate)
      return duration
file_path = 'example.wav'
duration = get_duration_wave(file_path)
print(f"Duration: {duration:.2f} seconds")
###出力### リーリー

この特定のコード スニペット内で、オーディオ ファイルの読み取りと変更を目的として、pydub ライブラリから取得した AudioSegment クラスをインポートします。オーディオ ファイルをロードするには、from_file 関数と、duration_seconds 属性を呼び出します。音声ファイルの長さを秒単位で取得するために使用されます。

librosa ライブラリを使用する方法 3:

Librosa は、Python を使用したオーディオ処理のためのもう 1 つの評判の高いライブラリであり、主に音楽とサウンドの分析に重点を置いています。ターミナルまたはコマンド プロンプトで「pip install librosa」と入力すると、簡単に実行できます。 librosa −

を使用して期間を取得するコード例を次に示します。

Duration: 10.00 seconds
###出力### リーリー

この例では、 librosa.load 関数を使用してオーディオ ファイルを読み取り、オーディオ データとサンプル レートを取得します。次に、 librosa.get_duration 関数を使用して、オーディオ データとサンプル レートに基づいて継続時間を計算します。

アプローチ 4: ffmpeg-python ライブラリの使用

FFmpeg は、さまざまなプラットフォームでオーディオとビデオを処理するために一般的に使用されるツールです。 ffmpeg-python ライブラリは、FFmpeg コマンド ライン インターフェイスの Python ラッパーとして機能し、pip install ffmpeg-python を使用してインストールできます。以下は、ffmpeg-python −

を使用してオーディオ ファイルの長さを取得する方法を示すサンプル コードです。

Example

import ffmpeg
def get_duration_ffmpeg(file_path):
   probe = ffmpeg.probe(file_path)
   stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'audio'), None)
   duration = float(stream['duration'])
   return duration
file_path = 'example.wav'
duration = get_duration_ffmpeg(file_path)
print(f"Duration: {duration:.2f} seconds")

Output

Duration: 10.00 seconds

在这个例子中,我们使用ffmpeg.probe函数来获取与音频文件相关的元数据。随后,我们从流列表中过滤出音频流,并从流字典中提取出'duration'字段中的持续时间。

结论

在本文中,我们深入探讨了使用wave、pydub、librosa和ffmpeg-python库在Python中获取音频文件时长的四种不同方法。每种方法都有其自身的优点和限制,库的选择取决于您个人的需求和偏好。这些代码示例旨在为您提供在Python项目中实现音频时长计算的坚实基础。

以上がPythonでオーディオの長さを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。