簡體   English   中英

如何在 python vlc 中獲取音頻的頻率、音高、低度等?

[英]How can I get Frequency, pitch, lowdness, etc of audio in python vlc?

似乎真的沒有任何函數來獲取這些值

import vlc

p = vlc.MediaPlayer(path/to/file.mp3)
p.play()

這里我需要獲取聲音的頻率、音高和其他屬性。 我不確定這是否可以使用 vlc-python,任何其他解決方案也會有所幫助

我認為您可能需要一個額外的庫來實現您想要的。 這是關於如何使用 Python 構建音頻頻譜分析儀的視頻教程: https : //youtu.be/AShHJdSIxkY

這是來自該視頻評論者的最終 --python2-- 代碼(感謝用戶 Hey Jose!)

#! /usr/bin/python

import pyaudio
import struct
import numpy as np
import matplotlib.pyplot as plt
import time

#%matplotlib tk

CHUNK = 4000
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000

p = pyaudio.PyAudio()

chosen_device_index = -1
for x in xrange(0,p.get_device_count()):
    info = p.get_device_info_by_index(x)
    #print p.get_device_info_by_index(x)
    if info["name"] == "pulse":
        chosen_device_index = info["index"]
        print "Chosen index: ", chosen_device_index


stream = p.open(format=FORMAT,
 channels=CHANNELS,
 rate=RATE,
 input_device_index=chosen_device_index,
 input=True,
 output=True,
 frames_per_buffer=CHUNK
 )
 
plt.ion()
fig, ax = plt.subplots()

x = np.arange(0, CHUNK)
data = stream.read(CHUNK)
data_int16 = struct.unpack(str(CHUNK) + 'h', data)
line, = ax.plot(x, data_int16)
#ax.set_xlim([xmin,xmax])
ax.set_ylim([-2**15,(2**15)-1])

while True:
 data = struct.unpack(str(CHUNK) + 'h', stream.read(CHUNK))
 line.set_ydata(data)
 fig.canvas.draw()
 fig.canvas.flush_events()

本教程使用 PyAudio ( https://people.csail.mit.edu/hubert/pyaudio/docs/ )

我還沒有完成教程,但閱讀示例代碼,他們似乎采取了分塊讀取音頻流並將字節映射到繪圖的 y 軸的方法。

如果這不適合您的應用程序,您可以查看

從音頻文件中提取音高特征

這個問題的答案暗示了這個圖書館: http : //digitalmusics.dartmouth.edu/~mcasey/bregman/

使用AudioEqualizer獲取頻率信息https://www.olivieraubert.net/vlc/python-ctypes/doc/vlc.AudioEqualizer-class.html

音軌將包含頻道和速率信息https://www.videolan.org/developers/vlc-branch/doc/doxygen/html/structlibvlc__audio__track__t.html

libvlc_media_stats_t結構也有更多信息https://www.videolan.org/developers/vlc-branch/doc/doxygen/html/structlibvlc__media__stats__t.html

int     i_read_bytes
float   f_input_bitrate
int     i_demux_read_bytes
float   f_demux_bitrate
int     i_demux_corrupted
int     i_demux_discontinuity
int     i_decoded_video
int     i_decoded_audio
int     i_displayed_pictures
int     i_lost_pictures
int     i_played_abuffers
int     i_lost_abuffers
int     i_sent_packets
int     i_sent_bytes
float   f_send_bitrate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM