Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mendapatkan tempoh audio dalam Python?

Bagaimana untuk mendapatkan tempoh audio dalam Python?

WBOY
WBOYke hadapan
2023-09-02 18:53:051151semak imbas

Bagaimana untuk mendapatkan tempoh audio dalam Python?

Bidang pemprosesan audio telah berkembang dengan ketara sejak beberapa tahun kebelakangan ini, dan Python telah menjadi pilihan biasa untuk mengendalikan tugas yang mengelilingi manipulasi audio. Apabila bekerja dengan audio, salah satu tugas biasa ialah menentukan panjang fail audio, yang berguna dalam pelbagai aplikasi seperti mencipta senarai main, analisis data audio atau membangunkan alat penyuntingan audio.

Sepanjang artikel ini, anda akan dibimbing melalui pelbagai teknik, dari yang asas hingga lanjutan, untuk mendapatkan tempoh audio menggunakan Python contoh kod sebenar akan disediakan di sepanjang jalan ke dalam subjek, adalah penting untuk mendapatkan pemahaman tentang konsep dan istilah asas yang berkaitan dengan pemprosesan audio Ini akan memberi anda asas yang diperlukan untuk melaksanakan pelbagai pendekatan yang dibentangkan kemudian dalam artikel dan kemudian terokai sintaks dan algoritma untuk mengiranya.

Istilah "tempoh audio" merujuk kepada tempoh masa fail audio dimainkan, biasanya diukur dalam saat atau minit. Nilai ini dipengaruhi oleh satu siri ciri yang mentakrifkan fail audio, termasuk bilangan sampel, saluran dan kadar sampel. Pemahaman menyeluruh tentang pengetahuan ini adalah penting untuk pelbagai aplikasi, termasuk tetapi tidak terhad kepada transkripsi, analisis dan penyuntingan audio.

Sintaks

Python menyediakan pelbagai perpustakaan untuk mengurus pemprosesan fail audio. Pustaka ini termasuk wave, pydub dan librosa, masing-masing dengan sintaks dan fungsi uniknya sendiri untuk memuat naik fail audio dan mengukur tempohnya. Proses biasa untuk menentukan tempoh fail audio termasuk langkah berikut:

  • Mengimport perpustakaan wajib.

  • Baca fail audio.

  • Mengekstrak ciri fail (seperti kadar sampel, kuantiti sampel dan kuantiti saluran).

  • Mengira tempoh menggunakan ciri yang diekstrak.

Algoritma

Untuk mendapatkan tempoh fail audio dalam Python, anda boleh melaksanakan algoritma berikut -

  • Laksanakan perpustakaan yang sesuai untuk memuat naik fail audio.

  • Ekstrak ciri fail audio yang berkaitan, termasuk kadar pensampelan, bilangan saluran dan bilangan bingkai.

  • Kira tempoh fail audio dengan membahagikan bilangan bingkai dengan kadar sampel.

  • Keluarkan nilai tempoh dengan mencetak atau mengembalikannya.

Pendekatan

Kami kini akan meneroka beberapa teknik untuk menentukan tempoh fail audio dalam Python. Kaedah berikut akan diperkenalkan −

  • Dengan menggunakan perpustakaan gelombang.

  • Dengan menggunakan perpustakaan pydub.

  • Gunakan perpustakaan librosa.

  • Dengan menggunakan perpustakaan ffmpeg-python.

Kaedah 1: Gunakan perpustakaan gelombang

Pustaka wave ialah modul terbina dalam Python yang menyediakan sokongan untuk fail WAV. Berikut ialah contoh kod lengkap yang menunjukkan cara mendapatkan tempoh fail audio menggunakan perpustakaan gelombang -

Contoh

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")

Output

Duration: 10.00 seconds

Pendekatan 2: Menggunakan perpustakaan pydub

Pustaka pydub berdiri sebagai alat yang biasa digunakan dan mudah digunakan untuk manipulasi audio Untuk menggunakan pydub, anda mesti memasangnya terlebih dahulu melalui pip install pydub. Berikut adalah contoh kod untuk mendapatkannya tempoh menggunakan pydub −

Contoh

from pydub import AudioSegment
def get_duration_pydub(file_path):
   audio_file = AudioSegment.from_file(file_path)
   duration = audio_file.duration_seconds
   return duration
file_path = 'example.wav'
duration = get_duration_pydub(file_path)
print(f"Duration: {duration:.2f} seconds")

Output

Duration: 10.00 seconds

Dalam coretan kod khusus ini, kami mengimport kelas AudioSegment, yang berasal dari pustaka pydub, dengan tujuan membaca dan membuat pengubahsuaian pada fail audio Untuk memuatkan fail audio, kami memanggil fungsi from_file dan duration_seconds atribut digunakan untuk memperoleh panjang fail audio dalam beberapa saat.

Kaedah 3 menggunakan perpustakaan librosa:

Librosa berdiri sebagai satu lagi perpustakaan yang dihormati untuk pemprosesan audio menggunakan Python, memberikan penekanan terutamanya pada analisis muzik dan bunyi Dengan menaip 'pip install librosa' dalam terminal atau command prompt anda, anda akan dapat memasangnya dengan mudah dan cepat Berikut ialah contoh kod untuk mendapatkan tempoh menggunakan librosa −

.

Contoh

import librosa
def get_duration_librosa(file_path):
   audio_data, sample_rate = librosa.load(file_path)
   duration = librosa.get_duration(y=audio_data, sr=sample_rate)
   return duration
file_path = 'example.wav'
duration = get_duration_librosa(file_path)
print(f"Duration: {duration:.2f} seconds")

Output

Duration: 10.00 seconds

Dalam contoh ini, gunakan fungsi librosa.load untuk membaca fail audio dan mendapatkan data audio dan kadar sampel. Kemudian, gunakan fungsi librosa.get_duration untuk mengira tempoh berdasarkan data audio dan kadar sampel.

Pendekatan 4: Menggunakan perpustakaan ffmpeg-python

FFmpeg ialah alat yang biasa digunakan untuk memproses audio dan video pada pelbagai platform. Pustaka ffmpeg-python bertindak sebagai pembungkus Python untuk antara muka baris arahan FFmpeg dan boleh dipasang menggunakan pip install ffmpeg-python. Berikut ialah contoh kod yang menunjukkan cara mendapatkan tempoh fail audio menggunakan 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项目中实现音频时长计算的坚实基础。

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan tempoh audio dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam