用python通过麦克风播放mp3文件

2024-10-01 11:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以使用python(而不是任何外部软件)来播放类似麦克风输入的mp3文件?

例如,我有一个mp3文件,用python脚本,它可以通过我的麦克风播放,这样在语音室里的其他人也能听到。正如我所说,这只是一个例子。在

当然,我做了一些研究。我发现我可以用一个软件来创建一个虚拟设备,而做一些事情就可以得到结果。但我的观点是,如果不安装软件,而是使用某种python脚本,这是否可能?在


Tags: 文件方法脚本软件事情mp3例子观点
2条回答

转到:http://pymedia.org/tut/ 它告诉你关于麦克风,Mp3,媒体文件的一切

如果你的意思是如何使用Python播放MP3,那么,这是一个广泛的问题。在

有没有可能,没有任何依赖关系,是的,但不值得。嗯,播放未压缩的音频是,但是MP3,好吧,我会在下面解释。在

要想在不安装pyaudio或pygame或类似软件的情况下播放Python中的原始音频数据,首先必须知道要在哪个平台上运行脚本。在

然后实现一组很好的函数来选择音频设备,设置诸如采样率、比特率、单声道/立体声等属性,将流传输到声卡并停止播放。在

这并不难,但要做到这一点,你必须在Windows上使用ctypes,在Mac和Linux上使用PyObjC是一种特殊情况,因为它支持许多音频系统(可能使用套接字连接到PulseAudio或管道连接到aplay/paplay/mpeg123。。。或者利用gstreamer)。在

但是为什么要这么做只是为了避免依赖,当你有很好的库,有简单的接口来访问和使用音频设备。在

PyAudio很不错。在

好吧,那是你的问题。在

但是,在没有外部库的情况下,从纯Python实时播放MP3,这不是完全不可能的,但是很难实现,据我所知,甚至没有人尝试过。在

有纯Python MP3解码器实现,但它比实时音频播放所需的速度慢10倍。它可以优化到几乎全速,但没有人对此感兴趣。在

它主要具有教育价值,并且在不需要实时速度的情况下使用。在

你应该这样做:

安装pygame并使用它直接播放MP3

或者:

安装PyAudio和一些可以解码Mp3的库,其中有很多都在上面pypi.python.org,并使用它解码MP3并将输出提供给PyAudio。在

还有更多的可能性,包括pymedia,但我认为这些是最简单的解决方案。在

好吧,当我们澄清你真正需要的是什么的时候,这就是答案。在

我会留下第一个完整的答案,因为你也需要这个部分。在

现在,您希望将音频播放到录制流中,以便任何录制音频输入的应用程序都可以录制您正在播放的内容。在

在Windows上,这叫做立体声混音,可以在“音量控制”中的“音频输入”下找到。在

选择默认的立体声输入。现在,当你打开一个录音应用程序,它不选择自己的输入频道,而是使用所选的频道(例如Skype),它将录制从扬声器中传出的所有声音和进入麦克风/线路输入的声音。在

我不能百分之百确定这个选项是否会出现在所有的窗口,或者它是你的声卡的一个功能。在

我肯定Creative和Realtek声卡支持它。在

所以,研究一下这个。在

要从Python中选择该选项,必须连接到winmm.dll使用ctypes并调用适当的函数。我不知道是哪一个,用什么论点。在

如果音量控制中没有这个选项,那么除了安装一个虚拟声卡来为你做回送外,别无选择。在

可能有这样一个软件打包成库,这样您就可以从Python或其他任何地方使用它。在

在Linux上,使用Pulseaudio应该很容易。我不知道怎么做,但我知道你可以做到,重定向流等。有教程在那里的某处。在

然后您可以从Python调用该命令,将其设置为这个值并重置为正常值。在

在Mac上,嗯,我真的不知道,但这应该是可能的。在

如果你想让你的MP3只在录音流中播放,而不是在你的扬声器上播放,在Windows上,如果没有环回音频设备,你将无法做到这一点。在

在Linux上,我相信你能做到,在Mac上应该是可能的,但是Q如何呢

我是cu目前没有时间四处搜寻库等,以提供一些有用的代码,所以你必须自己去做。但我希望我的指导能帮助你。在

相关问题 更多 >