有谁知道是否有一种方法来使用Python在相同的声卡中输出某个声卡输出到输出? (或任何其他语言)
如果是这样的话,是否可以编写一个脚本来读取声卡的input并将其反弹到同一张卡上的输出,如果这个input静音超过十分钟,则将其重新路由到输出?
提前致谢
编辑 : 任何操作系统的答案是受欢迎的。 Windows或Linux发行版首选,OSX也可以接受。
在Linux中进行aac-eld解码
如何从stream源再现audio
Gstreamer无法通过rtspsrc播放audio
Python中的跨平台audio播放
OS X / Linuxaudio播放与基于事件的界面?
Windows驱动程序API不是由Microsoft编写的
在Windows 7上以编程方式更改系统范围的扬声器平衡
Directshow.net不检测Windows 7中的所有麦克风
如何以编程方式设置系统响度(在OSX和Windows上)
为什么我不能使用IAudioEndpointVolume :: SetMasterVolumeLevelScalar为USB / Firewireaudio接口设置主音量
pyaudio有一个称为非阻塞回调的方法,其中输入(如麦克风)被直接路由到输出(扬声器/耳机),这意味着不能对输入流进行操作。
不知道如果那是你在找什么。
如果你在编写(或发送输出)之前需要操作流,那么你有@ rewolf的答案。
源代码来自网站 。
""" PyAudio Example: Make a wire between input and output (ie,record a few samples and play them back immediately). This is the callback (non-blocking) version. """ import pyaudio import time WIDTH = 2 CHANNELS = 2 RATE = 44100 p = pyaudio.PyAudio() def callback(in_data,frame_count,time_info,status): return (in_data,pyaudio.paContinue) stream = p.open(format=p.get_format_from_width(WIDTH),channels=CHANNELS,rate=RATE,input=True,output=True,stream_callback=callback) stream.start_stream() while stream.is_active(): time.sleep(0.1) stream.stop_stream() stream.close() p.terminate()
采摘设备
p = pyaudio.PyAudio() host_info = p.get_host_api_info_by_index(0) device_count = host_info.get('deviceCount') # can iterate through devices and check their info: p.get_device_info_by_host_api_device_index(0,device_index) {'defaultSampleRate': 44100.0,'defaultLowOutputLatency': 0.01,'defaultLowInputLatency': 0.0029024943310657597,'maxInputChannels': 2L,'structVersion': 2L,'hostApi': 0L,'index': 0L,'defaultHighOutputLatency': 0.1,'maxOutputChannels': 0L,'name': u'Built-in Microphone','defaultHighInputLatency': 0.013061224489795919}
录音和播放,实时
录制可以通过打开和读取输入流来完成,并且可以通过输出流同时播放。 可以使用input_device_index或output_device_index选择设备
例如,这个记录和立即播放:
import pyaudio BUFFER_SIZE = 4096 DURATION = 5 SAMPLE_RATE = 44100 p = pyaudio.PyAudio() input_stream = p.open( format=pyaudio.paInt16,channels=2,rate=SAMPLE_RATE,frames_per_buffer=BUFFER_SIZE,input_device_index=0 ) output_stream = p.open( format=pyaudio.paInt16,output=True ) for i in xrange(int(SAMPLE_RATE / BUFFER_SIZE * DURATION)): data = input_stream.read(BUFFER_SIZE) output_stream.write(data) input_stream.stop_stream() input_stream.close() output_stream.stop_stream() output_stream.close() p.terminate()
我并没有完全按照你的确切问题来回答卡片之间的音频等问题。但是我相信你可以从上面提到的内容中弄清楚这一点。
希望这可以帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。