alsa

alsa frame period period_size buffer_size 等解释

匿名 (未验证) 提交于 2019-12-03 00:19:01
英文原版 FramesPeriods 一个frame就等于一个要被播放的声音样本。与通道数和样本长度无关。 例子: 1帧立体声48khz 16位的pcm数据长度为4bytes 1帧5.1正道48k 16位pcm流的大小为12bytes 一个period就是每两次硬件中断之间的帧数。poll()会每个周期return一次。 buffer是一个环形buffer,大小一般来说比一个period size大,一般设做 2 * period size,但是一些硬件可以支持到8个周期大小的buffer,也可以设为非整数倍的period的大小。 现在如果我们的硬件设置为48khz,2周期,每个周期1024个帧,那么buffer size 就是2048个帧。硬件每处理一个buffer会中断2次,alsa会一直让buffer保持一个满的状态,每当第一个周期的样本播放完成,第二个周期的数据就会被播放,同时第三个周期的数据就会进入到第一个周期数据的位置。 另一个例子: 假设我们将要使用一个立体声 16位 44.1k的音频流,单向(录音或者播放),那么我们就有 立体声 = 2通道 1个样本 16bits = 2bytes 1个帧 代表 所有通道的一个样本。那么我们现在是双通道,所以 1帧 = (通道数) * (样本大小bytes) = 2 * 2 = 4bytes 为了能支持2 * 44.1k的采样率

asla架构和alsa-lib音频库的移植

匿名 (未验证) 提交于 2019-12-03 00:19:01
转载地址:https://blog.csdn.net/reille/article/details/5845913 alsa 是在LINUX出现比较晚的音频处理库,主要是针对原有的OSS的库进行改进.性能更好,支持多个播放源等.但相应的,增加的编程的复杂性. 【ALSA的体系结构】 http://www.alsa-project.org/ 主要跟编程相关是: ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.22.tar.bz2 ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.22.1.tar.bz2 ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.20.tar.bz2 ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.22.tar.bz2 ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-1.0.17.tar.bz2 其中alsa-driver,alsa-firwware是内核开发者所接触的东西,对于已经正常运行硬件,通常意味着这一部分已经整合到内核当中,无需修改.而alsa-utils主要是测试一些小工具.

百度大脑远场语音开发套件评测—快速上手,超赞语音交互体验

删除回忆录丶 提交于 2019-12-02 22:46:43
近年来,人工智能话题越来越热,受到了更多人的关注。百度从2010年开始人工智能技术开发,到现在已有8年多的时间,目前百度AI技术专利在中国甚至世界上都是名列前茅。 我大概在18年末开始接触到百度AI社区,通过使用文字识别、图像识别等百度AI技术,逐步感受到了AI技术的强大,同时也感觉到了百度AI技术的进步:AI技术领域范围越来越广泛,识别速度越来越快,识别准确度越来越高。这次,有幸收到百度远场语音开发套件的测评邀请,作为一个非测试专业人员,这里我就自己的百度远场语音开发套件使用过程及在使用过程中遇到的问题和大家分享一下,如有错误,请多多指教。 一、开箱 整个包装很简洁,就是一个白色的长方形盒子,正上方印着“百度大脑”标识。 打开盒子后,首先映入眼球的是一份“百度语音远场开发套件说明书”,里面介绍了硬件购成、开发资料等信息。 拿出说明书,看到的是一个长方形的盒子,里面放着电源适配器、USB线。 拿出盒子后,便看到了百度远场语音开发板主体了,被白色泡沫保护的很好。 接下来,一起具体看看远场开发板的一些细节: 最后,看看百度远场语音开发套件全家福: 百度大脑远场语音开发套件,基于 RK3308 开发平台打造,提供的麦克风选型适用于智能音箱、智能 家电、车载设备场景,整个开发套件包含麦克风阵列板、开发板、喇叭以及符合声学要求的腔体, 支持声源定位、噪声消除等信号处理算法,5 米内有效拾音

第17章Linux音频设备驱动之Linux ASoC音频设备驱动

匿名 (未验证) 提交于 2019-12-02 21:59:42
17.5 Linux ASoC音频设备驱动 17.5.1 ASoC(ALSA System on Chip) 驱动的组成 ASoC(ALSA System on Chip) 是 ALSA 在 SoC 方面的发展和演变,ASoC在本质上仍然属于ALSA,但是在 ALSA 架构基础上对 CPU 相关的代码和 Codec 相关的代码进行分离。其原因是,采用传统 ALSA 架构的情况下,同一型号的 Codec 工作于不同的 CPU 时,需要不同的驱动,这不符合代码重用的要求。 对于目前嵌入式系统上的 声卡驱动 开发,建议读者尽量采用 ASoC 框架 ,ASoC 主要由 3 部分组成。 (1) Codec 驱动 。这一部分只关心 Codec 本身,与 CPU 平台相关的特性不由此部分操作。 (2) 平台驱动 。这一部分只关心 CPU 本身,不关心 Codec。主要处理两个问题:DMA 引擎和 SoC 集成的 PCM、I 2 S 或 AC 97 数字接口控制。 (3) 板驱动(称为 machine 驱动) 。这一部分将平台驱动和 Codec 驱动绑定在一起,描述板一级的硬件特征。 在以上 3 部分中,1 和 2 基本都可以仍然是通用的驱动,Codec 驱动认为自己可以连接任意 CPU,而 CPU 的 I 2 S、PCM 或 AC 97 接口对应的平台驱动则认为自己可以连接任意符合其接口类型的

Linux ALSA驱动框架(一)--ALSA架构简介--声卡的创建

匿名 (未验证) 提交于 2019-12-02 21:59:42
(1)ALSA简介 (1) (2) alsa驱动框架核心层给我们干的活:创建声卡设备的控制接口和PCM设备 snd_soc_init()---> platform_driver_register(&soc_driver)---> soc_probe()---> snd_soc_register_card(card)--->注册自己的声卡设备 snd_soc_instantiate_card(card)---> { } (3) 在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调用alsa-lib提供的API,即可以完成对底层音频硬件的控制。 (4) 字符设备 C0D0代表的是声卡0中的设备0,pcmC0D0c最后一个c代表capture,pcmC0D0p最后一个p代表playback,这些都是alsa-driver中的命名规则。 (5) sound/core/sound.c alsa_sound_init (void) { register_chrdev snd_fops } snd_open (6) 谁调用snd_register_device_for_dev()(两路调用) 一路:声卡设备的控制接口 另一路:声卡设备的数据接口 声卡设备的控制接口 sound/core/control.c 创建一个snd

Linux ALSA驱动框架(五)--ASoC架构中的Machine

匿名 (未验证) 提交于 2019-12-02 21:59:42
(1) ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成整个设备的音频处理工作。 ASoC的一切都从Machine驱动开始,包括声卡的注册,绑定Platform和Codec驱动等等,下面就让我们从Machine驱动开始讨论吧。 (1) arch/mips/xburst/soc-x1630/common/platform.c }; &pd_x1830_audio_i2s_ops , }; }; { } }; module_platform_driver(snd_pd_x1830_audio_driver); 通过snd_soc_card结构,又引出了Machine驱动的另外两个个数据结构: 其中,snd_soc_dai_link中,指定了Platform、Codec、codec_dai、cpu_dai的名字,稍后Machine驱动将会利用这些名字去匹配已经在系统中注册的platform,codec,dai

Read the audio file while it's being written in NodeJS

六月ゝ 毕业季﹏ 提交于 2019-12-02 16:37:06
问题 I am capturing audio through alsa using ffmpeg and writing it to a wav file. But as it's being written I need to send the captured audio to some 3rd party. I have tried few methods including node-growing-file but not able to succeed. Is there a way I can read the file as a stream as long as it's being written and process it as required. 回答1: I don't know why this question was down voted. But after a lot of googling I found a NPM which does this job for you: Tailing Stream NPM It will read the

ALSA 音频工具 amixer、aplay、arecord

半腔热情 提交于 2019-12-02 09:27:12
ALSA 简介   ALSA 是 Advanced Linux Sound Architecture,高级 Linux 声音架构的简称,它在 Linux 操作系统上提供了音频和 MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA 已经成为默认的声音子系统,用来替换2.4系列内核中的 OSS(Open Sound System,开放声音系统)。   ALSA 的主要特性包括:高效地支持从消费类入门级声卡到专业级音频设备所有类型的音频接口,完全模块化的设计, 支持对称多处理(SMP)和线程安全,对 OSS 的向后兼容,以及提供了用户空间的 alsa-lib 库来简化应用程序的开发。   想了解更多的关于 ALSA 的这一开源项目的信息和知识,请查看:http://www.alsa-project.org/。 ALSA 音频工具编译安装 1、官网 http://www.alsa-project.org 下载 alsa-lib 和 alsa-utils。 例如:alsa-lib-1.0.27.2.tar.bz2 和 alsa-utils-1.0.27.2.tar.bz2 2、创建 alsa 安装目录(如 /home/rudy/alsa 目录),并在该目录下创建 install 目录,接着把压缩包拷到

Raspberry ALSA sound output / input slave

风格不统一 提交于 2019-12-01 21:18:56
I'm trying to set one device for playback and another one for capture, my nano /etc/asound.conf has this: pcm.!default { type asym playback.pcm "plughw:1,1" capture.pcm "plughw:1,0" } ctl.!default { type hw card 0 } I can play sound perfectly, but I cannot record sound, my python code is throwing this errors: ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side ALSA

Raspberry ALSA sound output / input slave

人盡茶涼 提交于 2019-12-01 21:04:31
问题 I'm trying to set one device for playback and another one for capture, my nano /etc/asound.conf has this: pcm.!default { type asym playback.pcm "plughw:1,1" capture.pcm "plughw:1,0" } ctl.!default { type hw card 0 } I can play sound perfectly, but I cannot record sound, my python code is throwing this errors: ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2217:(snd_pcm_open_noupdate)