Một đối tượng sounddevice.Stream
cho phép đồng thời đầu vào và đầu ra âm thanh kỹ thuật số PCM thông qua các mảng NumPy. Các thông số sau có sẵn [tất cả đều là tùy chọn]. tổng kết
samplerate
. Tần suất lấy mẫu [cho cả đầu vào và đầu ra] tính bằng khung hình trên giâyblocksize
. Số lượng khung [mẫu đơn trong trường hợp âm thanh đơn âm hoặc bộ mẫu trong trường hợp âm thanh đa kênh, thông thường, âm thanh nổi] được chuyển đến chức năng gọi lại [xem bên dưới]. Theo mặc định,blocksize=0
, có nghĩa là kích thước khối có thể sẽ có kích thước thay đổi, tùy thuộc vào khối lượng công việc của máy chủ và cài đặt độ trễ được yêu cầu [xem bên dưới]device
. Thiết bị đầu vào và đầu radtype
. Định dạng mẫu của numpy. ndarray được cung cấp cho cuộc gọi lại luồng [xem bên dưới]latency
. Độ trễ mong muốn [thời gian trôi qua giữa hành động tạo ra âm thanh và cảm nhận thực tế về âm thanh đó của người nghe] của bộ chuyển đổi ADC tính bằng giây. Các giá trị đặc biệtlow
vàhigh
[là giá trị mặc định sau] chọn độ trễ mặc định thấp và cao tương ứng. Tham số này chỉ có hiệu lực nếusounddevice.Stream
0sounddevice.Stream
1. Được sử dụng cho cài đặt đầu vào/đầu ra dành riêng cho API máy chủsounddevice.Stream
2. Chức năng gọi lại, có chữ ký.callback[indata: ndarray, outdata: ndarray, frames: int, time: CData, status: CallbackFlags] -> None
sounddevice.Stream
3 vàsounddevice.Stream
4. Bộ đệm đầu vào và đầu ra, tương ứng, dưới dạngsounddevice.Stream
5 hai chiều với một cột trên mỗi kênh [i. e. với hình dạng củasounddevice.Stream
6] và với kiểu dữ liệu được chỉ định bởidtype
. Bộ đệm đầu ra chứa dữ liệu chưa được khởi tạo và cuộc gọi lại được cho là sẽ lấp đầy nó bằng dữ liệu âm thanh, điều này sẽ phụ thuộc vào ứng dụng. `sounddevice.Stream
8. Số khung hình trongsounddevice.Stream
3 vàsounddevice.Stream
4samplerate
1. Dấu thời gian của khung đầu tiên trongsounddevice.Stream
3, trongsounddevice.Stream
4 và thời điểm hàm gọi lại được gọisamplerate
4. Cho biết nếu điều kiện tràn hoặc tràn xảy ra trong lần gọi cuối cùng đến chức năng gọi lại. Luồng tràn xảy ra khi thiết bị âm thanh tiêu thụ dữ liệu nhanh hơn dữ liệu đến bộ đệm âm thanh. Tràn xảy ra khi thiết bị âm thanh tiêu thụ dữ liệu quá chậm và tràn bộ đệm âm thanh. Thông thường, sự cố tràn xảy ra thường xuyên hơn nhiều so với sự cố tràn
samplerate
5. Chức năng do người dùng cung cấp sẽ được gọi khi luồng không hoạt độngsamplerate
6. Đặt thànhsamplerate
7 để tắt tính năng cắt]samplerate
8. Đặt thànhsamplerate
7 để tắt phối màublocksize
0. Đặt thànhsamplerate
7 để yêu cầu rằng, nếu có thể, luồng song công hoàn toàn sẽ không loại bỏ các mẫu đầu vào bị tràn mà không gọi lệnh gọi lại luồng. Điều này chỉ hoạt động nếublocksize=0
blocksize
3. Đặt thànhsamplerate
7 để gọi lệnh gọi lại luồng để lấp đầy bộ đệm đầu ra ban đầu, thay vì hành vi mặc định là mồi bộ đệm bằng số không [khoảng lặng]
00. 00 blocksize
5 cung cấp các liên kết cho thư viện PortAudio và một vài chức năng tiện lợi để phát và ghi các mảng NumPy chứa tín hiệu âm thanh. Do đó, nó có một số phụ thuộc để mở tệp WAV và hoạt động với mảng NumPy
00. 14 Đáng lẽ bạn đã cài đặt blocksize
6 từ trước đó, nhưng để đảm bảo an toàn, hãy tiếp tục cài đặt blocksize
6 và blocksize
8
00. 26 blocksize
5 sẽ cần blocksize
6 để hoạt động với mảng NumPy, sau đó chúng tôi sẽ sử dụng blocksize
8 để thực sự đọc trong các tệp WAV
00. 40 Trong khi điều đó đang diễn ra, chúng ta có thể vào trình soạn thảo văn bản và nhập blocksize=0
2 và blocksize
8. blocksize=0
4, và sau đó là blocksize
60
00. 57 Như trước đây, hãy tiếp tục và xác định blocksize
61 của bạn. Vì vậy, đối với tôi, blocksize
62
01. 03 Sau đó, bạn sẽ muốn lưu dữ liệu và tốc độ lấy mẫu từ tệp WAV đó. Vì vậy, hãy đặt blocksize
63 và blocksize
64 bằng với blocksize
65, sau đó bạn sẽ vượt qua blocksize
61 và sau đó là blocksize
67 [kiểu dữ liệu], mà bạn sẽ chỉ muốn blocksize
68. blocksize
69 sẽ đọc dữ liệu âm thanh từ tệp WAV đó và sau đó cũng xem xét các tiêu đề để lấy tỷ lệ lấy mẫu đó cho bạn
01. 31 được rồi. Vì vậy, khi bạn đã xác định những điều này, bạn có thể gọi cho blocksize
60 và chỉ cần nói blocksize
61. Chuyển vào blocksize
63 và tốc độ lấy mẫu đó
01. 40 Và sau đó, nếu bạn muốn sử dụng ________ 363 sau này, bạn có thể nói ________ 364, và điều đó sẽ đảm bảo rằng âm thanh đã phát xong trước khi tập lệnh kết thúc. Vì vậy, hãy thử điều này
01. 54 Tôi sẽ lưu cái này. Và, tất nhiên, chúng tôi đã cài đặt các phần phụ thuộc cho blocksize=0
2 chứ không phải bản thân blocksize=0
2, vì vậy hãy tiếp tục và lấy phần đó
02. 15 Chúng ta đi thôi. Thử lại. “Này, đây là tệp WAV. ” Được rồi, cái đó đã hoạt động. Bây giờ bạn đã biết cách sử dụng blocksize
5 để phát tệp và sau này bạn sẽ thấy, bạn thực sự có thể sử dụng thư viện này để ghi lại âm thanh. Trong video tiếp theo, bạn sẽ học cách sử dụng blocksize
68, xử lý khá nhiều định dạng âm thanh khác nhau