博客中的文章均为meelo原创,请务必以链接形式注明本文地址

sounddevice是一个与Numpy兼容的录音以及播放声音的包。

安装sounddevice包


直接通过pip就能安装。

pip install sounddevice

播放音乐


首先,用numpy生成440Hz的正弦波

import numpy as np
fs = 44100 # Hz
f = 440 # Hz
length = 5 #s
myarray = np.arange(fs * length)
myarray = np.sin(2 * np.pi * f / fs * myarray)

用sounddevice包播放音乐非常简单。调用play函数来播放声音,需要传入需要播放声音的波形,和采样率。

import sounddevice as sd
sd.play(myarray, fs)

查看声音设备


计算机上可能有多个声音播放/录制设备,sounddevice会默认使用系统默认的设备。调用query_devices()函数会显示系统所有的声音设备。

sd.query_devices()

下面是我计算机上的声音设备,>标示为默认输入设备,<表示默认的输出设备,声音设备名称之前是序号。默认的设备也可以通过sd.default.device查看,返回的是一个列表,有两个元素。第一个元素为默认的输入设备,第二个元素为默认的输出设备,设备是用序号来表示的。

   0 Microsoft 声音映射器 - Input, MME (2 in, 0 out)
> 1 立体声混音 (Realtek High Defini, MME (2 in, 0 out)
2 麦克风 (Realtek High Definition, MME (2 in, 0 out)
3 Microsoft 声音映射器 - Output, MME (0 in, 2 out)
< 4 扬声器 (Realtek High Definition, MME (0 in, 2 out)
5 主声音捕获驱动程序, Windows DirectSound (2 in, 0 out)
6 立体声混音 (Realtek High Definition Audio), Windows DirectSound (2 in, 0 out)
7 麦克风 (Realtek High Definition Audio), Windows DirectSound (2 in, 0 out)
8 主声音驱动程序, Windows DirectSound (0 in, 2 out)
9 扬声器 (Realtek High Definition Audio), Windows DirectSound (0 in, 2 out)
10 扬声器 (Realtek High Definition Audio), Windows WASAPI (0 in, 2 out)
11 立体声混音 (Realtek High Definition Audio), Windows WASAPI (2 in, 0 out)
12 麦克风 (Realtek High Definition Audio), Windows WASAPI (2 in, 0 out)
13 Speakers (Realtek HD Audio output), Windows WDM-KS (0 in, 6 out)
14 立体声混音 (Realtek HD Audio Stereo input), Windows WDM-KS (2 in, 0 out)
15 麦克风 (Realtek HD Audio Mic input), Windows WDM-KS (2 in, 0 out)
16 线路输入 (Realtek HD Audio Line input), Windows WDM-KS (2 in, 0 out)

修改默认的输入设备为系统输出声音


系统默认的声音输入设备是麦克风,如果需要录制系统声音则需要将声音设备切换成立体声混音。有可能不存在立体声混音这个选项,这时你需要升级你的声卡驱动更新为比2013-5-10发布的6.0.10.1900更高的版本。

通过上面运行sd.query_devices()可以看到,我的计算机立体声混音设备序号为1。因此我需要设置:

sd.default.device[0] = 1

录制系统声音


录音和声音播放一样简单,这时你需要调用rec函数,传入需要录音的时长(采样的点数),同时设置blocking=True表示录音完成再返回,最后设置channels=1表示只录制一个声道。

fs = 44100 # Hz
length = 5 # s
recording = sd.rec(frames=fs * length, samplerate=fs, blocking=True, channels=1)

最后使用scipy.io将音频保存为文件。

from scipy.io import wavfile
wavfile.write('recording.wav', fs, recording)

使用 Python 的 sounddevice 包录制系统声音的更多相关文章

  1. Mac录屏同时录制系统声音和画外音(Soundflower无法安装解决方案)

    个人博客地址:xzajyjs.cn 前言 以前一直有录屏的需求,但苦于自带的QuickTime 无法录制内屏声音,一直使用的是第三方的app.近期开腾讯会议需要录屏,但主持人本身没有开启录屏权限,只好 ...

  2. FastStone Capture无法录制系统声音解决方法(win10)

    步骤一: 右键桌面-->个性化 步骤二: 主题-->高级声音设置 步骤三: 录音-->右键“立体声混音”,单击启用就OK了.

  3. Python黑帽编程1.3 Python运行时与包管理工具

    Python黑帽编程1.3  Python运行时与包管理工具 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...

  4. python的egg包的安装和制作]

    Defining Python Source Code Encodings Python egg 的安装 egg文件制作与安装 2011-06-10 14:22:50|  分类: python |   ...

  5. 繁简转换OpenCC,autogb 和 autob5,iconv,python的jianfan包

    OpenCC OpenCC 是跨平台.多语言的开放中文转换库,除了基本的简繁转换功能外,用户还可以选择对不同用词习惯和异体字的处理方式. OpenCC 还提供方便的网页转换界面. OpenOffice ...

  6. python自动化运维:系统基础信息模块

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 第一章: 首先介绍下系统性能信息模块:psutil psutil能够轻松实现获取系统 ...

  7. Python/模块与包之模块

    Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用 ...

  8. mas录屏,带系统声音和麦克风声音

    自带的QuickTime + Soundflower 可完美解决,同时录系统的声音和mic声音,也可以只录系统声音. 安装Soundflower 在应用程序 -> 实用工具,里面找到“音频 MI ...

  9. 数据分析:基于Python的自定义文件格式转换系统

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

随机推荐

  1. phonegap(cordova)从手机app跳转到web页面在跳转回APP本地页面思路

    项目中需要用到 WAP支付宝支付. 但是 使用PHONEGAP开发 跳转到支付宝支付,然后跳转回来 就回不到APP的本地页面, 就是使用WAP的第三方登录也是一样的.很难从WAP页面在跳转到 app本 ...

  2. 使用uiautomator时遇到问题的处理方法

    本帖持续更新中… 一.使用adb devices无法连接到模拟器 这种情况可能是因为服务挂了之类的原因,重启一下服务 adb kill-server //关闭adb服务 adb start-serve ...

  3. Qt ------ QElapsedTimer 计算消耗多少时间

    The QElapsedTimer class provides a fast way to calculate elapsed times. The QElapsedTimer class is u ...

  4. P值解释和误区

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...

  5. [USACO14JAN]Recording the Moolympics

    题目描述 Being a fan of all cold-weather sports (especially those involving cows), Farmer John wants to ...

  6. C++设计实现算法时易犯错误

    1.未初始化 指针未初始化为NULL,造成判断条件出错 数值未初始化为0,造成数组超界,内存泄漏 2. long long输入时 lld or I64d 写成d一定出错 3.gcc编译报错:程序中有游 ...

  7. Nodejs文件监控chokidar

    最近有个需求是扫描用例,用例是放在svn上,如果每次扫描都去遍历目录的话会有占用太多的io,所以想着用文件监控,有文件变化时只对该文件进行操作. Nodejs里的 chokidar 模块可以更好的对文 ...

  8. 提高效率!15款最好的 Bug 跟踪应用程序

    当涉及到开发项目时,其中比较重要的事情是它需要某​​种形式的错误和问题跟踪工具来发现和解决问题,否则会浪费大量的时间. 此外,你总是要标签应用来标示那些悬而未决的问题,而这种分期执行的项目进度将帮助您 ...

  9. 云风pbc源码alloc.c

    #include <stdlib.h> #include <stdio.h> // 用于统计内存的申请和释放次数匹配 ; void * _pbcM_malloc(size_t ...

  10. Codeforces Round #419 (Div. 2) A-E

    上紫啦! E题1:59压哨提交成功翻盘 (1:00就做完了调了一个小时,还好意思说出来? (逃)) 题面太长就不复制了,但是配图很可爱所以要贴过来 九条可怜酱好可爱呀 A - Karen and Mo ...