我无法在 MacOS M1 Macbook 上使用 Python 播放任何音频

问题描述 投票:0回答:1

我正在使用 python 生成信号扫描 (MLS) 并测量房间的脉冲响应。我已成功运行代码并可以绘制脉冲响应。我的问题实际上是听到音频。我运行代码,没有听到任何声音,并且绘图很平坦,因为没有发出或记录任何音频。目前我正在使用我的 M1 Macbook pro,没有连接外部音频设备。

import numpy as np
import matplotlib.pyplot as plt
import sounddevice as sd

def generate_mls(length):
    # Generate Maximum Length Sequence (MLS)
    n = int(np.log2(length)) - 1
    sequence = np.random.randint(0, 2, size=(2 ** n) - 1)
    mls = np.array(sequence.tolist() * int(length / (2 ** n - 1)), dtype=np.float32)
    mls -= 0.5
    mls *= 2
    return mls

def play_and_capture(mls, sample_rate):
    print("Playing MLS...")
    sd.play(mls, samplerate=sample_rate, blocking=True)
    print("Recording...")
    recording = sd.rec(len(mls), samplerate=sample_rate, channels=1, dtype='float64')
    sd.wait()  # Wait until recording is finished
    print("Recording finished.")
    return recording.flatten()

def plot_impulse_response(impulse_response, sample_rate):
    time = np.arange(len(impulse_response)) / sample_rate
    plt.figure(figsize=(10, 6))
    plt.plot(time, impulse_response)
    plt.xlabel('Time (s)')
    plt.ylabel('Amplitude')
    plt.title('Room Impulse Response')
    plt.grid(True)
    plt.show()

# Define parameters
length = 2**15  # Length of MLS signal
sample_rate = 44100  # Hz

# Generate MLS
mls = generate_mls(length)

# Play MLS and capture the response
impulse_response = play_and_capture(mls, sample_rate)

# Plot the impulse response
plot_impulse_response(impulse_response, sample_rate)
python macos audio
1个回答
0
投票

我在虚拟环境中运行代码,当在终端窗口中的本地计算机上运行时,我能够成功运行代码并听到/录制音频。

© www.soinside.com 2019 - 2024. All rights reserved.