我目前正在用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. html5 + javascript播放波形聲音
- 2. 使用生成的波形數據在.NET中播放聲音
- 3. 播放波形(float數組)作爲聲音
- 4. 聲音播放和播放聲音
- 5. 聲音API僅支持播放PCM波形文件
- 6. 如何使用VBA播放波形文件或聲音文件
- 7. as3 URLRequest聲音存儲在數組中?
- 8. 如何從聲音的開始播放/暫停聲音和聲音播放?
- 9. 在播放聲音
- 10. 播放聲音在
- 11. c中聲音播放後的聲音#
- 12. 在firemonkey中播放聲音
- 13. 在C++中播放聲音
- 14. 在java中播放聲音
- 15. 在AS3中播放聲音
- 16. 在android中播放聲音
- 17. 在vb中播放聲音
- 18. 播放聲音?
- 19. 播放聲音
- 20. 播放聲音
- 21. 播放聲音
- 22. 播放聲音
- 23. 播放聲音
- 24. android:從sdk播放聲音
- 25. 從SD卡播放聲音
- 26. 播放聲音文件數組
- 27. 從as3中的bytearray播放聲音
- 28. 從ASP.NET中的按鈕播放聲音
- 29. 從c#.NET中的URI播放聲音
- 30. 分析當前播放的音樂曲目的波形數據
'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