目前我正在使用NumPy从NumPy阵列生成WAV文件。我想知道在它实际写入硬盘之前是否可以实时播放NumPy阵列。我发现使用PyAudio的所有示例都依赖于首先将NumPy数组写入WAV文件,但是我希望有一个预览函数,它只是将NumPy数组吐出到音频输出。
也应该是跨平台的。我正在使用Python 3(Anaconda发行版)。
答案 0 :(得分:8)
这已经奏效了!谢谢你的帮助!
{{1}}
现在看起来很简单,但是当你不太了解Python时,它似乎很糟糕。
答案 1 :(得分:4)
使用python-sounddevice非常简单:
You can also use PreparedStatement for the same.
String ColumnsArray[] = {"columnName"};
String sqlQuery = " " // write your insert query here
PreparedStatement pstmt = conn.prepareStatement(sql,ColumnsArray);
pstmt.setString(1, "anyvalue");
pstmt.execute();
ResultSet rs = pstmt.getGeneratedKeys();
if(rs.next())
long key = rs.getLong(1);
答案 2 :(得分:2)
正如您在examples中看到的那样,pyaudio只是从WAV文件中读取数据并将其写入流中。
没有必要先写一个WAV文件,你只需要一个正确格式的数据流。
我正在添加以下示例,以防链接死机(请注意,我没有编写此代码):
"""PyAudio Example: Play a WAVE file."""
import pyaudio
import wave
import sys
CHUNK = 1024
if len(sys.argv) < 2:
print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0])
sys.exit(-1)
wf = wave.open(sys.argv[1], 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()