Linux系统下录音方法

Linux系统下录音方法

安装软件

录音可选命令行和图形软件录制。

命令行安装alsa-utils:

Ubuntu/Debian:  sudo apt-get install alsa-utils alsa-tools alsa-tools-gui alsamixergui -y
Redhat/Centos:  yum install alsa-utils*

图形软件安装Audacity,Ubuntu下可以用系统的软件市场装。

录音准备

https://teliute.org/linux/Teauda/lesson8/lesson8.html
需要在系统设置的声音输入设备中选中MIC或LINE-IN设备,随后才开始录音,这一步做了后,录音不用指定设备。

命令行录音

在终端执行下面命令后,立即开始使用默认输入设备录音(arecord命令请自行查阅资料):

录制声音(一般是MIC):arecord -d 60 -f cd -r 8000 -c 1 -t wav voice.wav
转录音乐(一般是LINE-IN):arecord -d 60 -f cd -r 44100 -c 2 -t wav music.wav

Audacity录音

如下图,“输入设备"留空,点"开始"录制录音,音轨上会有声音波形,点"暂停”/“停止"不录音,点"播放"试听,点"文件”-"导出"可以导出声音到文件。
在这里插入图片描述

问题:录音有杂音

有杂音可能是输入设备音量过大导致,在系统设置的声音输入设备中可以调整音量,根据系统提示的当时音量值调整一个合适的输入音量,这样录制的声音就比较正常了。
在这里插入图片描述
录音完成后可以用Audacity降噪:https://teliute.org/linux/Teauda/lesson10/lesson10.html
这篇是系统降噪文章,可以试试:https://blog.csdn.net/weixin_37272286/article/details/81200494

Linux系统中使用ALSA(Advanced Linux Sound Architecture)库进行录音是一个相对简单的过程。ALSA是Linux内核中的一种音频驱动框架,提供了对音频硬件的底层控制和访问接口。 要使用ALSA库录音,需要进行以下步骤: 1. 打开音频设备:首先需要打开音频设备以开始录音。可以使用`snd_pcm_open()`函数来打开默认音频设备。例如,可以使用如下代码打开默认的音频捕获设备: ```C++ snd_pcm_t* handle; int err = snd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE,0); if(err < 0) { // 错误处理 } ``` 2. 配置硬件参数:在打开音频设备后,需要通过设置硬件参数来配置录音质量。可以使用`snd_pcm_hw_params_t`类型的变量来设置参数。例如,可以使用如下代码配置采样率为44.1kHz,通道数为2的参数: ```C++ snd_pcm_hw_params_t *params; int err = snd_pcm_hw_params_malloc(&params); if (err < 0) { // 错误处理 } err = snd_pcm_hw_params_any(handle, params); if (err < 0) { // 错误处理 } err = snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED); if (err < 0) { // 错误处理 } err = snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE); if (err < 0) { // 错误处理 } unsigned int rate = 44100; err = snd_pcm_hw_params_set_rate_near(handle, params, &rate, 0); if (err < 0) { // 错误处理 } unsigned int channels = 2; err = snd_pcm_hw_params_set_channels(handle, params, channels); if (err < 0) { // 错误处理 } err = snd_pcm_hw_params(handle, params); if (err < 0) { // 错误处理 } ``` 3. 录音处理:在配置完硬件参数后,可以使用`snd_pcm_readi()`函数来读取音频数据进行录音。例如,可以使用如下代码读取音频数据并输出到文件中: ```C++ FILE *file; file = fopen("recording.wav", "w"); if (file == NULL) { // 错误处理 } char buffer[1024]; int frames = 1024; int err; while (1) { err = snd_pcm_readi(handle, buffer, frames); if (err == -EPIPE) { // 捕获到溢出错误,需要进行错误处理 } else if (err < 0) { // 其他错误处理 } else { fwrite(buffer, sizeof(char), frames, file); } } fclose(file); ``` 4. 关闭音频设备:录音完成后,需要关闭音频设备以释放资源。可以使用`snd_pcm_close()`函数来关闭音频设备。例如,可以使用如下代码关闭音频设备: ```C++ snd_pcm_close(handle); ``` 以上就是在Linux系统下使用ALSA库录音的简要步骤。通过控制音频设备和配置参数,我们可以实现自定义的录音功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值