我一直在使用使用sounddevice
模块播放音频的python程序。该程序可以在我的办公室PC(运行Ubuntu 17.10)上正常运行,但不能在我的家庭PC(运行Linux Mint 18.3)上正常运行。它生成以下错误:
Traceback (most recent call last):
File "...path/to/my/code.py", line 11, in <module>
import sounddevice as sd
File "/home/arif/anaconda3/lib/python3.6/site-packages/sounddevice.py", line 64, in <module>
raise OSError('PortAudio library not found')
OSError: PortAudio library not found
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我想用 python 获取 macOS 上扬声器的内部音频输出。我可以在 Windows 上运行它,但无法在 macOS 上运行它。一开始我们使用 PyAudio,但我认为 SoundDevice 是更好的选择。
这是 Windows 的工作脚本:
import sounddevice as REC
import scipy.io.wavfile
# Recording properties
SAMPLE_RATE = 48000
SECONDS = 10
# Channels
MONO = 1
STEREO = 2
print(REC.query_devices())
# Command to get all devices listed: py -m sounddevice
# Device you want to record
REC.default.device = "PC-Lautsprecher (Realtek HD Audio output with SST)"
print(f'Recording for {SECONDS} seconds')
# Starts recording
recording = REC.rec(int(SECONDS * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=STEREO)
REC.wait() # …
Run Code Online (Sandbox Code Playgroud) 我winsound.Beep(frequency, duration)
之所以使用,是因为我想播放指定频率的声音。现在,我需要更改这些声音的音量。我怎样才能做到这一点?我试图从那里寻求帮助pyaudio
...
我正在编写一个Python应用程序来将音频录制为WAV文件,直到用户按下暂停或停止。暂停音频后,用户还应该能够恢复录制。此外:
解决这个问题的好方法是什么?您能为您的解决方案提供一些代码片段吗?
使用python-sounddevice,我可以stop()
通过start()
流来模仿“暂停”功能。我可以指定一个 numpy 数组作为记录的输出。但:
python-sounddevice 和 sound-file可以支持在事先不知道大小的情况下进行录音。但:
read
和write
方法。KeyBoardInterrupt
?Threading.Event()
阻止录制线程来模拟暂停功能,但录制不断写入文件我的sound-device
尝试
paused = False
def record():
self.recording = ? # create numpy.ndarray of the correct size
# (not sure the best way to do this without
# knowing the recording duration)
with sd.InputStream(samplerate=44100, device=mic, channels=1,
callback=self.callback): …
Run Code Online (Sandbox Code Playgroud) 我正在尝试仅使用内置麦克风和扬声器在 Mac(Catalina) 上的 Python 3.7 上使用音频。我的问题是,对于我尝试过的任何代码,在录制时我什么也接收不到,而在播放声音时什么也没有输出。我尝试了这个问题的答案:首先我尝试使用 PyAudio,如下所示:
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
Run Code Online (Sandbox Code Playgroud)
这会返回给我一个无声文件。
然后我尝试使用 SoundDevice:
import sounddevice as …
Run Code Online (Sandbox Code Playgroud) 我的代码是:
import scipy.io as sio
import sounddevice as sd
xx= sio.loadmat('C:\\Users\\dell\\Desktop\\Rabia Ahmad spring 2016\\FYP\\1. Matlab Work\\record work\\aa.mat')['aa']
sd.play(xx,64000)
Run Code Online (Sandbox Code Playgroud)
我收到错误sounddevice.PortAudioError: 打开 OutputStream 时出错: 通道数无效
我无法sounddevice
在 python 中使用录制音频。此代码之前可以在旧版本的 Mac OS 上运行。
python3代码如下:
import sounddevice as sd
import numpy as np
fs = 48000
duration=5
rec = sd.rec(int(duration * fs), samplerate=fs, channels=1, blocking=True)
print(rec)
Run Code Online (Sandbox Code Playgroud)
输出是
array([[0.],
[0.],
[0.],
...,
[0.],
[0.],
[0.]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
虽然此处并未显示所有值,但我已确认它们全部为零。当声音记录正确时,这些值大部分都是非零的。
我已确认设备设置正确:
sd.default.device # Output is [2, 3]
python3 -m sounddevice
0 DisplayPort, Core Audio (0 in, 2 out)
1 DisplayPort, Core Audio (0 in, 2 out)
> 2 MacBook Pro Microphone, Core Audio (1 in, 0 out)
< 3 MacBook …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码在 Google Colab 中导入声音设备库:
pip install sounddevice
import sounddevice as sd
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误。
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-8-fba28aeb5c71> in <module>()
7 import numpy as np
8 import requests
----> 9 import sounddevice as sd
10 import tensorflow as tf
11 import keras
/usr/local/lib/python3.6/dist-packages/sounddevice.py in <module>()
69 break
70 else:
---> 71 raise OSError('PortAudio library not found')
72 _lib = _ffi.dlopen(_libname)
73 except OSError:
OSError: PortAudio library not found
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Colab 中使用该库?