【问题标题】:Writing a wav file using sounddevice and numpy in python3在 python3 中使用 sounddevice 和 numpy 编写 wav 文件
【发布时间】:2020-07-12 01:43:28
【问题描述】:

我想用我创建 numpy 的 sounddevice 录制音调并将其写入 wav 文件。这是代码:

import numpy 
import sounddevice as sd
import soundfile as sf
import sys

duration = 3
amplitude = 0.3
sampling_frequency = 44100

time = numpy.arange(int(numpy.ceil(duration * sampling_frequency))) /   sampling_frequency

frequency1 = 500
tone1 = amplitude * numpy.sin(2* numpy.pi * frequency1 * time)

frequency2 = 700
tone2 = amplitude * numpy.sin(2* numpy.pi * frequency1 * time)
frequency3 = 1500
tone3 = amplitude * numpy.sin(3* numpy.pi * frequency1 * time)
frequency4 = 400
tone4 = amplitude * numpy.sin(4* numpy.pi * frequency1 * time)

result = tone1
result2 = tone2
result3 = tone3
result4 = tone4

sd.play(result + result2 + result3 + result4, sampling_frequency)

filename = 'output.wav'

mydata = sd.rec(int(result + result2 + result3 + result4),sampling_frequency,channels=2, blocking=True)
sf.write(filename, mydata, sampling_frequency)

我收到此错误:只有长度为 1 的数组可以转换为 Python 标量 代码有什么问题?我是python的新手

【问题讨论】:

  • 如果您添加完整的错误消息会很有帮助,因为它指定了哪一行产生了错误。

标签: python arrays numpy audio


【解决方案1】:

你的倒数第二行是

mydata = sd.rec(int(result + result2 + result3 + result4),sampling_frequency,channels=2, blocking=True)

您尝试将result1 等变量的总和转换为整数。然而,它们实际上是numpy 数组,因为time 是一个数组。您不能将数组转换为单个整数,因为它有多个值。我不确定您为什么要这样做,您可能只是想删除int(),并将其更改为

mydata = sd.rec(result + result2 + result3 + result4, sampling_frequency, channels=2, blocking=True)

【讨论】:

    【解决方案2】:

    sd.rec() 用于从声音设备录制声音并输出数组。它期望记录应该多长时间的整数。这就是为什么它抛出"TypeError: 'list' object cannot be interpreted as an integer"
    https://python-sounddevice.readthedocs.io/en/0.3.7/#recording

    您不必记录数据,因为您已经拥有数据(您的结果变量)。所以你应该替换

    mydata = sd.rec(int(result + result2 + result3 + result4),sampling_frequency,channels=2, blocking=True)
    

    mydata = result + result2 + result3 + result4
    

    【讨论】:

      猜你喜欢
      • 2017-04-08
      • 2017-12-20
      • 2020-02-26
      • 2013-04-22
      • 2019-04-07
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多