Mô-đun Sounddevice trong Python là gì?
def __repr__(tự). idev = _get_device_id(mặc định. thiết bị ['đầu vào'], 'đầu vào') odev = _get_device_id (mặc định. thiết bị['đầu ra'], 'đầu ra') chữ số = len(str(_lib. Pa_GetDeviceCount() - 1)) hostapi_names = [hostapi['name'] for hostapi in query_hostapis()] text = '\n'. tham gia ( u'{mark} {idx. {đào}} {tên}, {ha} ({vào} vào, {ra} ra)'. định dạng( mark=(' ', '>', '<', '*')[(idx == idev) + 2 * (idx == odev)], idx=idx, dig=digits, name=info[
Mô-đun này cho phép bạn truy cập giao diện âm thanh OSS (Open Sound System). OSS có sẵn cho nhiều loại Unices nguồn mở và thương mại, đồng thời là giao diện âm thanh tiêu chuẩn cho Linux và các phiên bản FreeBSD gần đây Show Đã thay đổi trong phiên bản 3. 3. Các hoạt động trong mô-đun này hiện tăng lên ở nơi đã được nâng lên. Xem thêm Hướng dẫn lập trình viên hệ thống âm thanh mởtài liệu chính thức cho OSS C API Mô-đun xác định một số lượng lớn các hằng số được cung cấp bởi trình điều khiển thiết bị OSS; xác định các biến và chức năng sau ngoại lệ ossaudiodev. OSSAudioLỗiNgoại lệ này được đưa ra trên một số lỗi nhất định. Đối số là một chuỗi mô tả những gì đã sai (Nếu nhận được lỗi từ một cuộc gọi hệ thống, chẳng hạn như fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)1, fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)2 hoặc fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)3, nó sẽ tăng. Lỗi được phát hiện trực tiếp bởi kết quả trong. ) (Để có khả năng tương thích ngược, lớp ngoại lệ cũng có sẵn là fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)7. )ossaudiodev. mở(chế độ)ossaudiodev. mở(thiết bị , chế độ) Mở thiết bị âm thanh và trả về đối tượng thiết bị âm thanh OSS. Đối tượng này hỗ trợ nhiều phương thức giống như tệp, chẳng hạn như fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)8, fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)2 và mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...0 (mặc dù có sự khác biệt tinh tế giữa ngữ nghĩa đọc/ghi Unix thông thường và ngữ nghĩa của các thiết bị âm thanh OSS). Nó cũng hỗ trợ một số phương pháp dành riêng cho âm thanh; thiết bị là tên tệp thiết bị âm thanh để sử dụng. Nếu nó không được chỉ định, trước tiên mô-đun này sẽ tìm trong biến môi trường mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...1 để biết thiết bị sử dụng. Nếu không tìm thấy, nó sẽ rơi trở lại mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...2 chế độ là một trong số mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...3 đối với quyền truy cập chỉ đọc (bản ghi), mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...4 đối với quyền truy cập chỉ ghi (phát lại) và mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...5 đối với cả hai. Vì nhiều card âm thanh chỉ cho phép một quá trình mở máy ghi âm hoặc trình phát tại một thời điểm, nên chỉ nên mở thiết bị cho hoạt động cần thiết. Hơn nữa, một số card âm thanh là bán song công. chúng có thể được mở để đọc hoặc viết, nhưng không phải cả hai cùng một lúc Lưu ý cú pháp gọi bất thường. đối số đầu tiên là tùy chọn và đối số thứ hai là bắt buộc. Đây là một tạo tác lịch sử để tương thích với mô-đun mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...6 cũ hơn thay thếossaudiodev. openmixer([thiết bị]) Mở thiết bị trộn và trả về đối tượng thiết bị trộn OSS. thiết bị là tên tệp thiết bị trộn để sử dụng. Nếu nó không được chỉ định, trước tiên mô-đun này sẽ tìm trong biến môi trường mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...8 để biết thiết bị sử dụng. Nếu không tìm thấy, nó sẽ rơi trở lại mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ...9 Đối tượng thiết bị âm thanhTrước khi bạn có thể ghi hoặc đọc từ thiết bị âm thanh, bạn phải gọi ba phương thức theo đúng thứ tự
Ngoài ra, bạn có thể sử dụng phương pháp mixer.setrecsrc (1 << ossaudiodev.SOUND_MIXER_MIC)3 để đặt cả ba tham số âm thanh cùng một lúc. Điều này thuận tiện hơn, nhưng có thể không linh hoạt trong mọi trường hợp Các đối tượng thiết bị âm thanh được trả về bằng cách xác định các phương thức và thuộc tính (chỉ đọc) sau đây oss_audio_device. đóng()Đóng hoàn toàn thiết bị âm thanh. Khi bạn viết hoặc đọc xong từ thiết bị âm thanh, bạn nên đóng thiết bị đó một cách rõ ràng. Không thể sử dụng lại thiết bị đã đóng oss_audio_device. fileno()Trả lại bộ mô tả tệp được liên kết với thiết bị oss_audio_device. đọc(kích thước)Đọc byte kích thước từ đầu vào âm thanh và trả về chúng dưới dạng chuỗi Python. Không giống như hầu hết các trình điều khiển thiết bị Unix, các thiết bị âm thanh OSS ở chế độ chặn (mặc định) sẽ chặn cho đến khi có toàn bộ lượng dữ liệu được yêu cầu oss_audio_device. ghi(dữ liệu)Ghi dữ liệu vào thiết bị âm thanh và trả lại số byte đã ghi. Nếu thiết bị âm thanh ở chế độ chặn (mặc định), toàn bộ dữ liệu luôn được ghi (một lần nữa, điều này khác với ngữ nghĩa của thiết bị Unix thông thường). Nếu thiết bị ở chế độ không chặn, một số dữ liệu có thể không được ghi—xem Đã thay đổi trong phiên bản 3. 5. Có thể ghi hiện được chấp nhận. oss_audio_device. ghi tất cả(dữ liệu)Ghi dữ liệu vào thiết bị âm thanh. đợi cho đến khi thiết bị âm thanh có thể chấp nhận dữ liệu, ghi nhiều dữ liệu nhất có thể và lặp lại cho đến khi dữ liệu được ghi hoàn toàn. Nếu thiết bị đang ở chế độ chặn (mặc định), điều này có tác dụng tương tự như ; . Không có giá trị trả về, vì lượng dữ liệu được ghi luôn bằng lượng dữ liệu được cung cấp Đã thay đổi trong phiên bản 3. 5. Có thể ghi hiện được chấp nhận. Đã thay đổi trong phiên bản 3. 2. Đối tượng thiết bị âm thanh cũng hỗ trợ giao thức quản lý bối cảnh, tôi. e. chúng có thể được sử dụng trong một tuyên bố. Các phương pháp sau đây mỗi ánh xạ tới chính xác một cuộc gọi hệ thống fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)3. Sự tương ứng là rõ ràng. ví dụ: mixer.setrecsrc (1 << ossaudiodev.SOUND_MIXER_MIC)0 tương ứng với ioctl ossaudiodev 2 và ossaudiodev 3 tương ứng với ossaudiodev 4 (điều này có thể hữu ích khi tham khảo tài liệu OSS). Nếu fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)3 cơ bản không thành công, tất cả chúng đều tăngoss_audio_device. không chặn() Đặt thiết bị ở chế độ không chặn. Khi ở chế độ không chặn, không có cách nào để đưa nó trở lại chế độ chặn oss_audio_device. getfmts()Trả lại bitmask của các định dạng đầu ra âm thanh được soundcard hỗ trợ. Một số định dạng được PMNM hỗ trợ là Sự sắp xếp Sự miêu tả
mã hóa logarit (được sử dụng bởi các tệp Sun
mã hóa logarit
một 4. 1 định dạng nén được xác định bởi Hiệp hội đa phương tiện tương tác
Âm thanh không dấu, 8-bit
Đã ký, âm thanh 16 bit, thứ tự byte cuối nhỏ (như được sử dụng bởi bộ xử lý Intel)
Đã ký, âm thanh 16 bit, thứ tự byte cuối lớn (được sử dụng bởi 68k, PowerPC, Sparc)
Đã ký, âm thanh 8 bit
Âm thanh nhỏ cuối 16-bit, không dấu
Âm thanh big-endian 16-bit chưa được ký tên Tham khảo tài liệu OSS để biết danh sách đầy đủ các định dạng âm thanh và lưu ý rằng hầu hết các thiết bị chỉ hỗ trợ một tập hợp con các định dạng này. Một số thiết bị cũ hơn chỉ hỗ trợ Cố gắng đặt định dạng âm thanh hiện tại thành định dạng—xem danh sách. Trả về định dạng âm thanh mà thiết bị đã được đặt thành, có thể không phải là định dạng được yêu cầu. Cũng có thể được sử dụng để trả về định dạng âm thanh hiện tại—thực hiện việc này bằng cách chuyển "định dạng âm thanh" của Đặt số lượng kênh đầu ra thành nchannels. Giá trị 1 biểu thị âm thanh đơn âm, 2 âm thanh nổi. Một số thiết bị có thể có nhiều hơn 2 kênh và một số thiết bị cao cấp có thể không hỗ trợ đơn âm. Trả về số lượng kênh mà thiết bị đã được đặt thành oss_audio_device. tốc độ(lấy mẫu)Cố gắng đặt tốc độ lấy mẫu âm thanh thành lấy mẫu mỗi giây. Trả về tỷ lệ thực sự được đặt. Hầu hết các thiết bị âm thanh không hỗ trợ tốc độ lấy mẫu tùy ý. Tỷ lệ phổ biến là Tỷ lệ Sự miêu tả 8000 tỷ lệ mặc định cho 11025 ghi âm lời nói 22050 44100 Âm thanh chất lượng CD (ở 16 bit/mẫu và 2 kênh) 96000 Âm thanh chất lượng DVD (ở 24 bit/mẫu) oss_audio_device. đồng bộ hóa()Đợi cho đến khi thiết bị âm thanh phát từng byte trong bộ đệm của nó. (Điều này hoàn toàn xảy ra khi đóng thiết bị. ) Tài liệu PMNM khuyến nghị đóng và mở lại thiết bị hơn là sử dụng oss_audio_device. đặt lại()Dừng phát hoặc ghi ngay lập tức và đưa thiết bị về trạng thái có thể chấp nhận lệnh. Tài liệu PMNM khuyến nghị đóng và mở lại thiết bị sau khi gọi oss_audio_device. bài đăng()Cho người lái xe biết rằng đầu ra có khả năng bị tạm dừng, giúp thiết bị có thể xử lý việc tạm dừng một cách thông minh hơn. Bạn có thể sử dụng điều này sau khi phát hiệu ứng âm thanh tại chỗ, trước khi đợi người dùng nhập hoặc trước khi thực hiện I/O đĩa Các phương thức tiện lợi sau đây kết hợp một số ioctl hoặc một ioctl và một số phép tính đơn giản oss_audio_device. đặt tham số(định dạng , nkênh, samplerate[, strict=False])Đặt các tham số lấy mẫu âm thanh chính—định dạng mẫu, số kênh và tốc độ lấy mẫu—trong một cuộc gọi phương thức. định dạng, nchannels và samplerate phải được chỉ định trong , và phương thức. Nếu nghiêm ngặt là đúng, hãy kiểm tra xem từng tham số có thực sự được đặt thành giá trị được yêu cầu hay không và tăng nếu không. Trả về một bộ (định dạng, nchannel, tốc độ lấy mẫu) cho biết các giá trị tham số thực sự được đặt bởi trình điều khiển thiết bị (i. e. , giống như giá trị trả về của , , và ) Ví dụ, (fmt, channels, rate) = dsp.setparameters(fmt, channels, rate) tương đương với fmt = dsp.setfmt(fmt) channels = dsp.channels(channels) rate = dsp.rate(rate)oss_audio_device. kích thước buf() Trả về kích thước của bộ đệm phần cứng, trong các mẫu oss_audio_device. số lượng tắc nghẽn()Trả về số lượng mẫu trong bộ đệm phần cứng chưa được phát oss_audio_device. tự do()Trả về số lượng mẫu có thể được xếp vào hàng đợi vào bộ đệm phần cứng để phát mà không bị chặn Các đối tượng thiết bị âm thanh cũng hỗ trợ một số thuộc tính chỉ đọc oss_audio_device. đã đóngBoolean cho biết thiết bị đã được đóng chưa oss_audio_device. tênChuỗi chứa tên của tệp thiết bị oss_audio_device. chế độChế độ I/O cho tệp, hoặc là Đối tượng thiết bị trộnĐối tượng bộ trộn cung cấp hai phương thức giống như tệp oss_mixer_device. đóng()Phương pháp này đóng tệp thiết bị trộn đang mở. Bất kỳ nỗ lực nào khác để sử dụng bộ trộn sau khi đóng tệp này sẽ làm tăng oss_mixer_device. fileno()Trả về số xử lý tệp của tệp thiết bị trộn đang mở Đã thay đổi trong phiên bản 3. 2. Đối tượng bộ trộn cũng hỗ trợ giao thức quản lý bối cảnh. Các phương pháp còn lại dành riêng cho trộn âm thanh oss_mixer_device. điều khiển()Phương thức này trả về một bitmask chỉ định các điều khiển bộ trộn có sẵn (“Điều khiển” là một “kênh” có thể trộn cụ thể, chẳng hạn như mixer=ossaudiodev.openmixer() if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM): # PCM is supported ... code ... Đối với hầu hết các mục đích, điều khiển Trả về một bitmask cho biết điều khiển bộ trộn âm thanh nổi. Nếu một bit được đặt, điều khiển tương ứng là âm thanh nổi; Xem ví dụ mã cho chức năng để biết ví dụ về nhận dữ liệu từ bitmask oss_mixer_device. kiểm soát lại()Trả về một bitmask chỉ định các điều khiển bộ trộn có thể được sử dụng để ghi. Xem ví dụ về mã để biết ví dụ về cách đọc từ bitmask oss_mixer_device. nhận(kiểm soát)Trả về âm lượng của điều khiển bộ trộn đã cho. Tập được trả về là 2-tuple Tăng nếu một điều khiển không hợp lệ được chỉ định hoặc nếu một điều khiển không được hỗ trợ được chỉ định oss_mixer_device. đặt(kiểm soát , (, right))Đặt âm lượng cho điều khiển bộ trộn nhất định thành Tăng nếu điều khiển bộ trộn không hợp lệ được chỉ định hoặc nếu âm lượng được chỉ định nằm ngoài phạm vi oss_mixer_device. get_recsrc()Phương thức này trả về một bitmask cho biết (các) điều khiển nào hiện đang được sử dụng làm nguồn ghi oss_mixer_device. set_recsrc(bitmask)Gọi hàm này để chỉ định nguồn ghi. Trả về một bitmask cho biết nguồn ghi mới (hoặc các nguồn) nếu thành công; . Để đặt nguồn ghi âm hiện tại thành đầu vào micrô Làm cách nào để nhập Sounddevice bằng Python?Cài đặt . cài đặt conda -c conda-forge python-sounddevice python3 -m pip cài đặt thiết bị âm thanh python3 -m pip gỡ cài đặt sounddevice Làm cách nào để ghi lại âm thanh trong Python?Chúng tôi có thể sử dụng mô-đun sounddevice của python để ghi và phát âm thanh. Mô-đun này cùng với mô-đun wavio hoặc scipy cung cấp cách lưu âm thanh đã ghi |