标签: python-sounddevice

声音设备未找到PortAudio库

我一直在使用使用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 python-sounddevice

7
推荐指数
1
解决办法
5317
查看次数

使用python在macOS上获取扬声器的内部音频输出

我想用 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)

python macos core-audio pyaudio python-sounddevice

7
推荐指数
0
解决办法
321
查看次数

蟒蛇:如何改变音量?

winsound.Beep(frequency, duration)之所以使用,是因为我想播放指定频率的声音。现在,我需要更改这些声音的音量。我怎样才能做到这一点?我试图从那里寻求帮助pyaudio...

python audio pyaudio python-sounddevice

5
推荐指数
1
解决办法
7018
查看次数

如何在 python 中录制不确定持续时间的音频并允许暂停和恢复功能?

我正在编写一个Python应用程序来将音频录制为WAV文件,直到用户按下暂停停止。暂停音频后,用户还应该能够恢复录制。此外:

  • 应用程序无法预先知道录音会持续多长时间
  • 应用程序应避免内存不足(因为录制可能会很长)。例如,它可以实时写入 WAV 文件,以防止将不断增长的录音存储在内存中。

解决这个问题的好方法是什么?您能为您的解决方案提供一些代码片段吗?

使用python-sounddevice,我可以stop()通过start()流来模仿“暂停”功能。我可以指定一个 numpy 数组作为记录的输出。但:

  • 我不知道要制作多大的数组(因为我不知道录制持续时间)
  • 当数组填满时我该怎么办?

python-sounddevice 和 sound-file可以支持在事先不知道大小的情况下进行录音。但:

  • 我如何合并“暂停”和“恢复”功能?声音文件只有readwrite方法。
  • 有没有比使用更好的方法来停止流KeyBoardInterrupt
  • 我可以在每次“暂停”后创建不同的录音,并在用户单击“停止”后合并 WAV 文件吗?
  • 我尝试使用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)

python audio audio-recording python-3.x python-sounddevice

5
推荐指数
1
解决办法
7173
查看次数

使用 Python 录制或播放音频无法在 Mac 上运行:没有错误且没有声音

我正在尝试仅使用内置麦克风和扬声器在 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)

python audio macos pyaudio python-sounddevice

5
推荐指数
1
解决办法
3745
查看次数

sounddevice.PortAudioError:打开 OutputStream 时出错:通道数无效

我的代码是:

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 时出错: 通道数无效

numpy scipy python-3.x python-sounddevice

4
推荐指数
1
解决办法
8518
查看次数

无法使用声音设备录制声音

我无法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)

python audio-recording python-sounddevice

4
推荐指数
1
解决办法
3089
查看次数

无法在 Google Colab 中导入声音设备

我正在尝试使用以下代码在 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 中使用该库?

python python-sounddevice google-colaboratory

3
推荐指数
1
解决办法
6344
查看次数