Tôi hiện đang thử nghiệm tạo âm thanh bằng Python và tôi tò mò làm thế nào tôi có thể lấy một mảng biểu diễn dạng sóng (với tốc độ mẫu 44100 hz) và chơi nó. Tôi đang tìm kiếm Python thuần túy ở đây, thay vì dựa vào một thư viện hỗ trợ nhiều hơn chỉ định dạng .wav.Phát âm thanh từ dạng sóng được lưu trữ trong một mảng
Trả lời
Bạn nên sử dụng thư viện. Viết tất cả trong python tinh khiết có thể là hàng ngàn dòng mã, để giao tiếp với phần cứng âm thanh!
Với thư viện, ví dụ: audiere, nó sẽ được đơn giản như này:
import audiere
ds = audiere.open_device()
os = ds.open_array(input_array, 44100)
os.play()
Ngoài ra còn của pyglet, pygame, và nhiều người khác ..
Tôi nghĩ bạn có thể tìm danh sách này http://wiki.python.org/moin/PythonInMusic Nó liệt kê nhiều công cụ hữu ích để làm việc với âm thanh.
Để phát mảng âm thanh input_array của mẫu 16 bit. Đây là ví dụ được sửa đổi từ 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()
hoặc sử dụng mô-đun sounddevice. Cài đặt sử dụng pip install sounddevice
, nhưng bạn cần điều này đầu tiên: sudo apt-get install libportaudio2
tuyệt đối cơ bản:
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)
Một vài lựa chọn hơn:
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)
Lưu ý rằng sounddevice không hoạt động nếu chạy trong Eclipse. –
- 1. Tạo hình ảnh dạng sóng từ tệp âm thanh
- 2. Phát âm thanh bằng .NET sử dụng dữ liệu dạng sóng được tạo
- 3. WebRTC Phát trực tiếp âm thanh/phát sóng
- 4. Máy phát âm thanh sóng sin trong Java
- 5. phát âm thanh từ luồng trong android
- 6. Phát tệp MP3 được lưu trữ dưới dạng blob
- 7. Bộ tổng hợp âm thanh dạng sóng liên tục
- 8. Tạo âm thanh sóng sin trong Python
- 9. Lưu trữ tệp âm thanh trong lưu trữ cục bộ html5- tải xuống tệp âm thanh với javascript
- 10. Cách phát tệp sóng hoặc tệp âm thanh bằng VBA
- 11. Android: Cách phát hiện "Bật lưu trữ USB" Phát sóng?
- 12. phát âm thanh từ internet bằng AVAudioPlayer
- 13. phát sóng âm thanh/video từ android qua udp tới wifi và nghe với vlc
- 14. Định dạng âm thanh CMSampleBuffer
- 15. Làm cách nào để phát một âm thanh hoặc sóng tùy chỉnh với Delphi?
- 16. trích xuất âm thanh từ một fla
- 17. Máy phát sóng âm thanh đơn giản với SDL trong C++
- 18. Nhận mảng byte âm thanh với API âm thanh HTML5?
- 19. Phát âm thanh nổi trong android
- 20. Hiển thị sóng âm thanh để ghi âm
- 21. Lấy mẫu sóng của tệp âm thanh trong Java
- 22. Android - Phát âm thanh từ tai nghe
- 23. Phát hiện tần số từ một tệp âm thanh
- 24. Cách phát âm thanh từ tài nguyên
- 25. Âm thanh HTML5 định dạng âm thanh nào được hỗ trợ
- 26. Xử lý âm thanh - Nhận dạng âm
- 27. Ghi lại âm thanh và phát âm thanh được điều chế trong Android?
- 28. Phát âm thanh khi nhấn một phím
- 29. Máy chủ lưu trữ USB 3.1 của Android - Trình phát sóng không nhận được USB_DEVICE_ATTACHED
- 30. Quy tắc phát sóng mảng cố định
'audiere' dường như là một dự án rất cũ ... cuối cùng phát hành vào năm 2006, và readme cho ràng buộc Python là ngày 2002 và tài liệu tham khảo Python 2.2 ... –
Tôi đã sử dụng nó bản thân mình trên python 2,7 và nó vẫn hoạt động tốt. Mô-đun audiere là từ http://pyaudiere.org/, có thể bạn đang xem http://audiere.sourceforge.net/. pyaudiere sử dụng API Audiere – wim
Trang web pyaudiere không còn tồn tại nữa và buổi chiếu phim vẫn chưa được cập nhật từ năm 2006. Đây không còn là câu trả lời hay nữa. – jozzas