如何在python 3中访问音频输出以进行分析

问题描述 投票:3回答:1

我正在尝试播放一首歌,在播放时为它制作一个音频可视化器,我希望可视化器基于输出信号,以便更模块化,更容易同步,但我不知道如何访问我的电脑的音频输出没有制作特殊的硬件。我如何只用编程来做到这一点。

我一直在研究pyaudio,到目前为止这是我的代码。我认为它正在访问输入和输出信号,但我不知道如何删除前者。我的所有尝试都破坏了程序。

最后,这段代码主要来自这篇关于这个主题的精彩文章:https://www.swharden.com/wp/2016-07-19-realtime-audio-visualization-in-python/

import pyaudio
import numpy as np
maxValue = 2**16
bars = 35
p=pyaudio.PyAudio()
stream=p.open(format=pyaudio.paInt16,channels=2,rate=44100, 
              input=True, output=True, frames_per_buffer=256
             )
while True:
    data = np.fromstring(stream.read(1024),dtype=np.int16)*100
    #print(type(data))
    dataL = data[0::2]
    dataR = data[1::2]
    #print(dataR.shape)
    peakL = np.abs(np.max(dataL)-np.min(dataL))/maxValue
    peakR = np.abs(np.max(dataR)-np.min(dataR))/maxValue
    lString = "#"*int(peakL*bars)+"-"*int(bars-peakL*bars)
    rString = "#"*int(peakR*bars)+"-"*int(bars-peakR*bars)
    #print(dataL)
    print("L=[%s]\tR=[%s]"%(lString, rString))
    #if lString != rString:
    #    print('here')
python audio audio-streaming hardware-programming
1个回答
0
投票

这有三个想法:

  1. 将输出路由到JACK,在pyaudio中处理(使用pyjack),然后输出到扬声器。
  2. 使用麦克风,这正是本文所做的。
  3. 如果可以在与可视化相同的应用程序中播放音乐,那么您有很多选择。我可能会检查一下,例如PyGame,因为它提供了实时播放音乐和制作视觉效果所需的一切。否则很多资源都可以在Python In Music找到。

请记住,如果你的想法是在一些播放器中播放音乐并让Python以某种方式捕捉到流,那将是相当具有挑战性的。为了一个好的目的,隔离了进程和流。访问不属于您的内存空间很容易导致分段错误。

© www.soinside.com 2019 - 2024. All rights reserved.