我正在使用PyAudio来录制麦克风的输入.
由于音频录制对我来说很好,我应该尝试简单地抑制其错误消息吗?还是有办法解决它们?
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib audio/pcm_bluetooth.c:1613:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1613:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1613:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1613:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or …Run Code Online (Sandbox Code Playgroud) 我尝试使用pygame来播放这样的wav文件:
import pygame
pygame.init()
pygame.mixer.music.load("mysound.wav")
pygame.mixer.music.play()
pygame.event.wait()
Run Code Online (Sandbox Code Playgroud)
但它改变了声音,我不知道为什么!我看了这个链接解决方案,并不能解决我的播放波形文件的问题!
对于这个解决方案,我不知道应该导入什么?
s = Sound()
s.read('sound.wav')
s.play()
Run Code Online (Sandbox Code Playgroud)
对于这个解决方案/ dev/dsp在新版本的linux中不存在:
from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen('tada.wav','rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
try:
from ossaudiodev import AFMT_S16_NE
except ImportError:
if byteorder == "little":
AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
else:
AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()
Run Code Online (Sandbox Code Playgroud)
当我尝试pyglet它给我这个错误:
import pyglet
music = pyglet.resource.media('mysound.wav')
music.play()
pyglet.app.run()
--------------------------
nima@ca005 Desktop]$ python …Run Code Online (Sandbox Code Playgroud) 好的,所以我pyaudio从包中python-pyaudio使用安装apt-get,现在当我导入和调用时如下:
Python 2.7.3 (default, Sep 26 2012, 21:53:58)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyaudio
>>> p= pyaudio.PyAudio()
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only …Run Code Online (Sandbox Code Playgroud) 我试图在python中创建一个程序,在按下某个键时播放特定的大键琴音符.我希望它保持响应,这样你就可以继续播放更多的音符(有点像普通的电钢琴.)但是,因为存储音符的wav文件长约7-10秒,我遇到了一些问题.我每秒至少可以按10键.因此,在一个音符的持续时间内,我可以同时播放大约100个不同的wav文件.我试图使用winsound,但它无法一次播放多个wav文件.然后我转移到PyAudio,它有点像.我发现完成我想要的唯一方法是:
from msvcrt import getch
import pyaudio
import wave
import multiprocessing as mp
#This function is just code for playing a sound in PyAudio
def playNote(filename):
CHUNK = 1024
wf = wave.open(filename, 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
if __name__ == "__main__":
while True:
#If the 'a' key is pressed: start a new process that calls playNote
#and pass in the file …Run Code Online (Sandbox Code Playgroud) python ×4
pyaudio ×2
alsa ×1
audio ×1
pulseaudio ×1
pygame ×1
pyglet ×1
python-3.x ×1
ubuntu ×1