资讯详情

使用soundcard在Python中操作声卡

简 介: 利用Python中的soundcard软件包可以对声卡MIC,SPEAKER操作。基于此,配合可编程信号源DG1062可获得声卡的详细幅频特性。

操作声卡
文章目录
soundcard 软件包
读取音频设备信息
获取特定输入
录音与回复
录音
回放函数
录音和回复
显示录制 信号波形
采集正弦波
声卡带宽
测量方法
测量结果
测量低频截止频率
测量高频截止频率
设置不同 采用频率
提高采样频率
降低采样频率
测量低频截止频率
测量中频段 幅频特性
实验总结

 

§01 作声卡


  之前通过实验( )初步测试了计算机声卡录制声音所对应的频率范围,并在 记录了 。实验中使用了录音软件Audacity进行录制。为了方便后期实验,需要测试直接在Python语言中操作声卡。

一、soundcard 软件包

  在python中提供对于声卡操作的软件包包括:

  上面两个软件都可以正常安装。由于只在 中给出了示例程序,所以下面仅对软件包进行测试。

1、读取音频设备信息

(1) 测试程序

from headm import *
import soundcard as sc

speakers = sc.all_speakers()
printf(speakers)
default_speaker = sc.default_speaker()
printf(default_speaker)
mics = sc.all_microphones()
printf(mics)
default_mic = sc.default_microphone()
printf(default_mic)

(2) 读取结果

[<Speaker 扬声器 (VIA High Definition Audio) (2 channels)>, <Speaker DELL U2410-1 (NVIDIA High Definition Audio) (2 channels)>, <Speaker SPDIF Interface (TX0) (VIA High Definition Audio) (2 channels)>, <Speaker SPDIF Interface (TX1) (VIA High Definition Audio) (2 channels)>]

<Speaker 扬声器 (VIA High Definition Audio) (2 channels)>

[<Microphone Analog (USB Capture AIO Analog) (2 channels)>, <Microphone 立体声混音 (VIA High Definition Audio) (2 channels)>, <Microphone Digital (USB Capture AIO) (2 channels)>, <Microphone 麦克风 (3- USB Audio Device) (1 channels)>, <Microphone 数字音频接口 (USB3. 0 capture) (1 channels)>, <Microphone 线路输入 (VIA High Definition Audio) (2 channels)>]

<Microphone 麦克风 (3- USB Audio Device) (1 channels)>

2、获取特定输入

  利用 get_microphone() 获得对应的mic输入。

one_mic = sc.get_microphone('线路输入')
printf(one_mic)

  上述代码输出:

<Microphone 线路输入 (VIA High Definition Audio) (2 channels)>

二、录音与回复

1、录音

  下面给出了录音的函数:

data = default_mic.record(samplerate=48000, numframes=48000)

2、回放函数

  下面给出了回放函数:

default_speaker.play(data/numpy.max(data), samplerate=48000)

3、录音和回复

  下面的代码测试了利用 “”进行录音,然后通过缺省喇叭进行回放。

with one_mic.recorder(samplerate=48000) as mic,\
     default_speaker.player(samplerate=48000) as sp:
    for _ in range(10):
        data = mic.record(numframes=10240)
        sp.play(data)

  修改回复的samplerate参数,可以改变回复是声音的频率。

三、显示录制信号波形

1、采集正弦波

from headm import *
import soundcard as sc

default_mic = sc.default_microphone()

one_mic = sc.get_microphone('线路输入')

data = one_mic.record(samplerate=48000, numframes=1024)
plt.plot(data)
plt.xlabel("Samples")
plt.ylabel("Values")
plt.grid(True)
plt.tight_layout()
plt.show()

▲ 图1.3.1 显示采集到的正弦波波形

▲ 图1.3.2 显示采集到的正弦波波形

  从上面可以看到在数据的起始部分显示了一些数据为0的采集数据。这可能是声卡在被初始化的时候对应的起始数据为0。下面通过对声卡先进行初始化,采集 一段之后,再采集,就可以避免这种情况。

from headm import *
import soundcard as sc

default_mic = sc.default_microphone()

one_mic = sc.get_microphone('线路输入')

with one_mic.recorder(samplerate= 

标签: 2sc2510a高频晶体管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台