我目前正在用Python生成声音,并且我很好奇我如何获取表示波形的数组(采样率为44100赫兹),以及播放。我在这里寻找纯Python,而不是依赖一个支持的不仅仅是.wav格式的库。从存储在数组中的波形播放声音
6
A
回答
5
您应该使用库。用纯python编写代码可能需要数千行代码,才能与音频硬件接口!
使用库(例如, audiere,这将是如此简单:
import audiere
ds = audiere.open_device()
os = ds.open_array(input_array, 44100)
os.play()
有也pyglet,pygame的,和许多其他..
3
我想你可以看看这个名单 http://wiki.python.org/moin/PythonInMusic 它列出很多有用的工具与工作声音。
3
播放声音给定的阵列input_array的16位采样。这是从pyadio documentation page
import pyaudio
# instantiate PyAudio (1)
p = pyaudio.PyAudio()
# open stream (2), 2 is size in bytes of int16
stream = p.open(format=p.get_format_from_width(2),
channels=1,
rate=44100,
output=True)
# play stream (3), blocking call
stream.write(input_array)
# stop stream (4)
stream.stop_stream()
stream.close()
# close PyAudio (5)
p.terminate()
2
变形例或使用sounddevice模块。安装使用pip install sounddevice
,但你需要这个第一:sudo apt-get install libportaudio2
绝对的基本:
import numpy as np
import sounddevice as sd
sd.play(myarray)
#may need to be normalised like in below example
#myarray must be a numpy array. If not, convert with np.array(myarray)
一些更多的选择:
import numpy as np
import sounddevice as sd
#variables
samplfreq = 100 #the sampling frequency of your data (mine=100Hz, yours=44100)
factor = 10 #incr./decr frequency (speed up/slow down by a factor) (normal speed = 1)
#data
print('..interpolating data')
arr = myarray
#normalise the data to between -1 and 1. If your data wasn't/isn't normalised it will be very noisy when played here
sd.play(arr/np.max(np.abs(arr)), samplfreq*factor)
+0
请注意,如果在Eclipse中运行,sounddevice不起作用。 – 2017-12-14 12:19:20
相关问题
- 1. 使用生成的波形数据在.NET中播放声音
- 2. 如何使用VBA播放波形文件或声音文件
- 3. as3 URLRequest声音存储在数组中?
- 4. 如何从声音的开始播放/暂停声音和声音播放?
- 5. c中声音播放后的声音#
- 6. 在C++中播放声音
- 7. 在android中播放声音
- 8. 播放声音
- 9. 播放声音
- 10. 播放声音?
- 11. android:从sdk播放声音
- 12. 播放声音文件数组
- 13. 从as3中的bytearray播放声音
- 14. 从ASP.NET中的按钮播放声音
- 15. 从c#.NET中的URI播放声音
- 16. 分析当前播放的音乐曲目的波形数据
- 17. 在plsql中播放音频/声音
- 18. 无形地播放声音效果pygame
- 19. 在Oracle中存储波形
- 20. 在Win8中播放原始PCM波形音频(用户预览)
- 21. 如何从双数组中创建声音并在扬声器上播放它
- 22. VC++播放声音
- 23. Ruby声音播放
- 24. MonoTouch:播放声音
- 25. 声音未播放
- 26. 声音未播放
- 27. 如何从AS3库中播放声音?
- 28. 声音字节数组的AS3播放不从开始
- 29. 在Android上播放声音
- 30. Android,在soundpool播放声音
'audiere'似乎是一个很老的项目...最后发布于2006年,自述文件的Python绑定日期为2002年,并引用Python 2.2 ... – 2012-01-03 05:00:44
我已经使用它自己在python 2.7上,它仍然工作正常。 audiere模块来自http://pyaudiere.org/,可能您正在查看http://audiere.sourceforge.net/。 pyaudiere使用Audiere API – wim 2012-01-03 05:17:34
pyaudiere网站不再存在,audiere自2006年以来尚未更新。这不再是一个好的答案。 – jozzas 2012-04-05 00:24:08