Python:获取音频平移(L-R)?

Python:获取音频平移(L-R)?,python,audio,pan,Python,Audio,Pan,我正在尝试使用Python获取音频文件的Pan信息。 最好是任何音频文件。目前正在测试.wav文件。 我很迷路,所以任何信息都将不胜感激 提前感谢。据我所知,您有两个单声道文件包含相同的源,而一个代表立体声文件的左声道,另一个代表立体声文件的右声道 为了获得平移值,您必须假设平移是如何完成的。如果您假设,您可以求解角度方程以获得平移值(介于-1和1之间,分别为-45°到45°): 据我所知,你的评论,你有两个单声道文件包含相同的来源,而一个代表左声道,另一个代表立体声文件的右声道 为了获得平移值

我正在尝试使用Python获取音频文件的Pan信息。 最好是任何音频文件。目前正在测试.wav文件。 我很迷路,所以任何信息都将不胜感激


提前感谢。

据我所知,您有两个单声道文件包含相同的源,而一个代表立体声文件的左声道,另一个代表立体声文件的右声道

为了获得平移值,您必须假设平移是如何完成的。如果您假设,您可以求解角度方程以获得平移值(介于-1和1之间,分别为-45°到45°):


据我所知,你的评论,你有两个单声道文件包含相同的来源,而一个代表左声道,另一个代表立体声文件的右声道

为了获得平移值,您必须假设平移是如何完成的。如果您假设,您可以求解角度方程以获得平移值(介于-1和1之间,分别为-45°到45°):


我理解你的问题了吗?你有一个立体声音频文件,其中包含一个源,平移到未知角度,你想得到这个角度吗?我有两个音频文件,除了一个左平移和一个右平移之外,其他都是相同的。如果不是这个工作流程,软件会将它们作为单独的轨道显示出来。我想写一个条件,它将根据pan的值重命名文件。我是否理解您的问题?你有一个立体声音频文件,其中包含一个源,平移到未知角度,你想得到这个角度吗?我有两个音频文件,除了一个左平移和一个右平移之外,其他都是相同的。如果不是这个工作流程,软件会将它们作为单独的轨道显示出来。我想写一个条件,将根据pan的值重命名文件。非常感谢您的回复。我应该说我对python很陌生。我一直在尝试安装运行此脚本所需的所有模块。Scipy给我带来了很多麻烦,我似乎无法安装它。是否有其他模块将提供相同的数据?有安装了所有通用模块的现成Python发行版:或。有关其他安装提示,请参阅。如果您不想使用scipy,在任何情况下,您都可以使用内置的较低级别破解自己的读写wave文件的功能。非常感谢您的回复。我应该说我对python很陌生。我一直在尝试安装运行此脚本所需的所有模块。Scipy给我带来了很多麻烦,我似乎无法安装它。是否有其他模块将提供相同的数据?有安装了所有通用模块的现成Python发行版:或。有关其他安装提示,请参阅。如果您不想使用scipy,在任何情况下,您都可以使用内置的较低级别来破解自己的读写wave文件的函数。
import numpy as np
import scipy.io.wavfile as wavfile

def ampradio_to_angle(x):
    """ converts ratio of amplitude of left and right channel to degree in radians """
    if x == 1:
        return 0
    else:
        return 2 * np.arctan((-1 * np.sqrt(2) * np.sqrt(x*x + 1) + x + 1) / (x - 1))

def rad_to_unit(x):
    """ scales -45° to 45° in radiants between -1 and 1 """
    return np.degrees(x)/45

sr, left_channel, = wavfile.read("leftfile.wav")
sr, right_channel = wavfile.read("rightfile.wav")
idx = right_channel != 0
if len(right_channel[idx]) == 0:
    ratio = 1e9 # some big number
else:
    ratio = np.average(left_channel[idx] / right_channel[idx])

print(rad_to_unit(ampradio_to_angle(ratio)))