# coding:utf8"""本模块讲述如何使用sounddevice库, 对声卡的ASIO驱动进行调用, 进行播放, 录音操作使用ASIO驱动的好处:1. 延迟低, 就是时延小, 播放录音操作过程中的软硬件时延;2. 通道个数多(是MME, WDM-KS 等驱动的两倍数量, 因为ASIO可以控制单个插孔)本机使用了 FireFace 802 系列的声卡, 支持 ASIO 驱动https://www.rme-audio.com/home.html"""import os
import sounddevice as sd
import soundfiletest_wav_file_path = r"F:\sounddevice_test_wav\wav_test\张杰 - 往事随风.wav"data_array, sample_rate = soundfile.read(test_wav_file_path)# 初始化一个录音文件路径
rec_file_path = os.path.join(os.path.abspath(os.path.join(os.getcwd(), os.path.pardir)),"sounddevice_test_wav", "rec_files", "rec_1.wav")# 使用ASIO播放
# 第一步, 找到 ASIO 总的唯一id.
# 就是通过 python -m sounddevice 查询出来的信息中--最左侧的数字, 当然是对应 ASIO 那个驱动, 有且只有一个;
# 前提是你的电脑连接的声卡支持ASIO驱动, 本机用的是 FireFace 802 系列
# 比如: 48 ASIO .....asio_top_only_one_id = 48  # 这里, 我先假设, 当前电脑连接了有ASIO驱动的声卡(比如 FireFace 802系列), 其ASIO驱动是48索引# 下面这两个id ---> 举个例子:  "Analog 1" 对应的id是 0;   "Analog 2" 对应的id是 1
asio_single_channel_id_1 = 0  # 相当于使用了 Analog 1 这个通道,  也就是 FireFace 802 声卡硬件后侧的编号为1的插口
asio_single_channel_id_2 = 1  # 相当于使用了 Analog 2 这个通道,  也就是 FireFace 802 声卡硬件后侧的编号为2的插口# 要想使用 sounddevice 调用 ASIO 驱动, 就需要按照下边设置一下
asio_in = sd.AsioSettings(channel_selectors=[asio_single_channel_id_1])
asio_out = sd.AsioSettings(channel_selectors=[asio_single_channel_id_2])# 播放方式一
sd.default.extra_settings = None, asio_out  # 单独播放, 就只用配置一个输出id
sd.default.device[1] = asio_top_only_one_id  # 这里要配置ASIO唯一那个索引id, 本机是48
sd.play(data_array, blocking=True, samplerate=sample_rate, mapping=None)# 播放方式二
sd.default.device[1] = asio_top_only_one_id  # 这里要配置ASIO唯一那个索引id, 本机是48
sd.play(data_array, blocking=True, samplerate=sample_rate, mapping=None, extra_settings=(None, asio_out))# 录音方式一
sd.default.extra_settings = asio_in, None  # 单独录制, 就只用配置一个输入id
sd.default.device[0] = asio_top_only_one_id  # 这里要配置ASIO唯一那个大id, 本机是48
res_data_array_1 = sd.rec(frames=48000 * 30, samplerate=48000, channels=1, mapping=None, blocking=True)# 录音方式二
sd.default.device[0] = asio_top_only_one_id  # 这里要配置ASIO唯一那个大id, 本机是48
res_data_array_2 = sd.rec(frames=48000 * 30, samplerate=48000, channels=1, mapping=None, blocking=True,extra_settings=(asio_in, None))# 如果是边录边播, 需要设置两个
sd.default.extra_settings = asio_in, asio_out
sd.default.device[0] = asio_top_only_one_id
sd.default.device[1] = asio_top_only_one_id
res_data_array = sd.playrec(data_array, samplerate=sample_rate, blocking=True,input_mapping=None, output_mapping=None, channels=2)soundfile.write(rec_file_path, res_data_array, samplerate=sample_rate, subtype="PCM_16")

代码作为参考, 可以根据各自需求拆分组装, 最好不要直接复制粘贴运行

Python 音频: 使用 sounddevice 调用 ASIO 声卡驱动相关推荐

  1. Python 音频库 及具体使用介绍(包括声卡通道获取及选择) 第一篇: sounddevice

    话不多说, 直接上代码, 代码有注释, 解释得很清楚 这一个模块是基本介绍. 下一个模块是多线程, 多进程调用, 让多个声道同时播放不同音乐 模块名: sounddevice_instructions ...

  2. 音频audio/sound声卡驱动分析

    音频可以播放(可以听到声音), 说明音频解码和输出部分基本是正常的, 整个通道已经打通了. 感觉播放速度太快了(或太慢了)说明audio输出部分的频率不对, 太高了或者太低了.audio/sound音 ...

  3. S3C2440 音频解码芯片WM8976声卡驱动移植、测试以及madplay播放mp3文件(三十一)

    https://www.cnblogs.com/lifexy/p/7867782.html 本节学习: 分析linux中的OOS声卡系统 修改s3c2410-uda1341.c的控制部分,移植wm89 ...

  4. Linux ALSA声卡驱动之七:录音(Capture) 调用流程

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  5. 浅析alsa声卡驱动snd_pcm_start函数-将音频数据真实的发送到外部音频接口硬件

    转载自链接:浅析alsa声卡驱动snd_pcm_start函数-将音频数据真实的发送到外部音频接口硬件-gliethttp-ChinaUnix博客 http://blog.chinaunix.net/ ...

  6. linux音频驱动程序测试,Linux声卡驱动移植和测试

    一.分析驱动程序,根据开发板修改代码 代码太长,就不贴了,几个注意点: 1. 查看开发板原理图和S3C2410的datasheet,UDA1341的L3MODE.L3DATA.L3CLOCK分别与S3 ...

  7. linux声卡测试命令,linux添加声卡驱动使用命令行音频播放器的方法

    首先linux系统需要有声卡 哪怕是虚拟声卡,我用的是virtualbox,intel 80x AC97 声卡. 安装声卡驱动,在linux内核的找到声卡对应的驱动 可以集成到内核,或者安装为模块,为 ...

  8. 瑞昱Realtek(Realtek HD Audio Driver)音频声卡驱动R2.49 for Win7_Vista

    不管是在高端系列主板上,还是在低端系列主板上,我们都能看到Realtek瑞昱的身影,Realtek HD Audio Driver能够支持所有的Realtek HD Audio音频驱动.Realtek ...

  9. Intel J4125 音频驱动(声卡驱动)安装

    Intel J4125 音频驱动(声卡驱动) 最近,手上有一台使用Intel J4125 CPU的小电脑,声卡驱动程序丢失了,右下角是一个红色的X,一开始以为是声卡坏了,后来折腾了半天,居然可以装上驱 ...

  10. USB声卡驱动(二):USB音频设备描述符

    USB声卡驱动(二)USB音频设备描述符 本篇笔记,分两部分,第一部分,是基本知识的记录.第二部分是一个实际的例子. 一.基本知识 一个音频设备(Audio Device)含有多个音频功能(Audio ...

最新文章

  1. 当前最佳的YOLOv4是如何炼成的?细数那些Tricks
  2. python斗地主游戏源码_我用tkinter写的一个斗地主练习复盘python程序
  3. 移动端自动化==什么是Appium
  4. 2月28日云栖精选夜读 | 阿里云率先达成国家绿色数据中心标准,平均PUE低于1.3...
  5. 雅虎开源可以提升流操作速度的DataSketches
  6. Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini以及服务无法启动的解决办法以及修改初始密码的方法...
  7. LOJ#6002. 「网络流 24 题」最小路径覆盖
  8. android自定义tab的分隔符,TabView中的分隔符
  9. Tensorlayer深度强化学习之Tensorlayer安装
  10. 使用C#调用P6 Primavera WebService(自建服务IntegrationAPI)
  11. 鸿蒙3.0系统下载,鸿蒙os3.0系统官网版-华为鸿蒙os3.0下载官网手机版-66街机网
  12. 如何看懂蓝桥杯单片机(CT107S)原理图
  13. 【正点原子STM32连载】第五十二章 FPU测试(Julia分形)实验摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  14. 怎么给表格加一列序号_如何给word表格添加一列序号?
  15. 2013武汉住房公积金新政详解
  16. P1107 [BJWC2008]雷涛的小猫
  17. 根据图片地址上传图片
  18. java序列化算法透析_java--序列化及其算法透析
  19. 2019年安徽省大学生网络攻防赛赛前培训——Day1
  20. detectron研读

热门文章

  1. 如何一次性批量打印PDF、Word、Excel、PPT和图片 - 文件批量打印工具
  2. 如何设置.net控件SplitContainer平均分配
  3. C语言bmp转JPEG不用库函数,C++图片格式转换:BMP转JPEG
  4. BMP测试图片及显示源码
  5. opencv-python 摄像机标定
  6. 2016清华计算机学院复试名单,清华大学计算机系2016统考硕士拟录取名单
  7. Android半透明
  8. ios8正式版固件开放下载 有哪些亮点?
  9. 【视频音频】雷霄骅开源视音频项目汇总
  10. java滚动字幕实训报告_Java实习报告 (7000字).doc