【问题标题】:NumPy array holding .wav audio data for sounddevice保存 sounddevice 的 .wav 音频数据的 NumPy 数组
【发布时间】:2017-12-20 20:25:41
【问题描述】:

我想使用 sounddevice 的 playrec 功能。首先,我只想让sd.play() 工作,我是 Python 新手,从未使用过 NumPy,我已经使用 pyaudio 播放音频,但我需要 sounddevice 中的同时播放记录功能。当我尝试播放音频 .wav 文件时,我得到:TypeError:不支持的数据类型:'string288'。我认为这与必须将 .wav 文件存储在 numpy 数组中有关,但我不知道该怎么做。这是我所拥有的:

import sounddevice as sd
import numpy as np

sd.default.samplerate = 44100
sd.play('test.wav')
sd.wait

【问题讨论】:

    标签: python numpy audio


    【解决方案1】:

    sounddevice.play() 的文档说:

    sounddevice.play(data, samplerate=None, mapping=None, blocking=False, loop=False, **kwargs)
    

    其中 data 是“类数组”。

    正如您尝试的那样,它不能使用音频文件名。首先必须读取音频文件,并将其解释为 numpy 数组。 这段代码应该可以工作:

    data, fs = sf.read(filename, dtype='float32')
    sd.play(data, fs)
    

    您会发现更多示例here

    【讨论】:

    • 感谢@sandoval31,这成功了!我只需要确保安装了 Pysoundfile 依赖项github.com/bastibe/PySoundFile。我记得看过这个例子,但起初它很混乱,这真的让我明白了,谢谢!
    猜你喜欢
    • 2019-05-07
    • 2023-04-01
    • 2019-02-10
    • 2014-09-18
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    相关资源
    最近更新 更多