多声卡的音频数据读取对齐方法、装置、设备及介质制造方法及图纸

技术编号:36355701 阅读:61 留言:0更新日期:2023-01-14 18:12
本发明专利技术提供了多声卡的音频数据读取对齐方法、装置、设备及介质,该方法包括:应用程序启动,并创建至少两个线程;获取应用程序使用ALSA配置的采样属性,根据采样属性确定音频数据读取耗时;基于音频数据读取耗时确定线程睡眠时长,将至少两个线程保持睡眠状态并持续线程睡眠时长;根据多线程同步启动机制在同一时间点启动至少两个线程;至少两个线程通过ALSA

【技术实现步骤摘要】
多声卡的音频数据读取对齐方法、装置、设备及介质


[0001]本专利技术涉及音频数据处理
,尤其涉及一种多声卡的音频数据读取对齐方法、装置、计算机设备及存储介质。

技术介绍

[0002]目前,ALSA(Advanced Linux Sound Architecture,即高级linux声音架构),已经成为了linux的主流音频体系结构,在内核设备驱动层,ALSA提供了alsa

driver(声卡驱动)对音频驱动进行耦合和管理,同时在应用层,ALSA提供了alsa

lib(用户空间库),应用程序只要调用alsa

lib的API(Application Programming Interface,应用程序接口)即可关联alsa

driver,完成对底层音频硬件的控制。
[0003]目前,在控制各个声卡进行音频数据采样时,一般是通过应用程序创建多个子线程,在子线程中通过ALSA的API来控制各个声卡的音频数据采样,例如:当应用程序执行read()接口时,保存在内核缓冲区的音频数据将被拷贝到应用程序的用户缓存中再被使用。但是,当应用程序在多线程的环境下进行读取音频数据时,因采集音频数据以及音频数据的传送拷贝会有一定延迟,而导致应用程序在某一个时间节点同时去多个声卡读取音频数据时,不能保证多个声卡都可以同时传送音频数据给应用程序,所以导致应用程序读取到的音频数据不是时间对齐的,从而导致那些基于时间对齐读取的音频数据为前提开发的功能异常。

技术实现思路

[0004]本专利技术实施例提供了一种多声卡的音频数据读取对齐方法、装置、计算机设备及存储介质,旨在解决现有技术中应用程序在某一个时间节点同时去多个声卡读取音频数据时,不能保证多个声卡都可以同时传送音频数据给应用程序,所以导致应用程序读取到的音频数据不是时间对齐的问题。
[0005]第一方面,本专利技术实施例提供了一种多声卡的音频数据读取对齐方法,其包括:
[0006]应用程序启动,并创建至少两个线程;
[0007]获取所述应用程序使用ALSA配置的采样属性,根据所述采样属性确定音频数据读取耗时;
[0008]基于所述音频数据读取耗时确定线程睡眠时长,将所述至少两个线程保持睡眠状态并持续所述线程睡眠时长;
[0009]根据多线程同步启动机制在同一时间点启动所述至少两个线程;
[0010]所述至少两个线程通过ALSA

API读取对应声卡的音频数据;
[0011]将所述音频数据储存至所述应用程序中与所述至少两个线程对应的用户缓存区中。
[0012]第二方面,本专利技术实施例提供了一种多声卡的音频数据读取对齐装置,其包括:
[0013]启动单元,用于应用程序启动,并创建至少两个线程;
[0014]耗时确定单元,用于获取所述应用程序使用ALSA配置的采样属性,根据所述采样属性确定音频数据读取耗时;
[0015]睡眠单元,用于基于所述音频数据读取耗时确定线程睡眠时长,将所述至少两个线程保持睡眠状态并持续所述线程睡眠时长;
[0016]同步启动单元,用于根据多线程同步启动机制在同一时间点启动所述至少两个线程;
[0017]音频数据读取单元,用于所述至少两个线程通过ALSA

API读取对应声卡的音频数据;
[0018]音频数据储存单元,用于将所述音频数据储存至所述应用程序中与所述至少两个线程对应的用户缓存区中。
[0019]第三方面,本专利技术实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的多声卡的音频数据读取对齐方法。
[0020]第四方面,本专利技术实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的多声卡的音频数据读取对齐方法。
[0021]本专利技术实施例提供了一种多声卡的音频数据读取对齐方法、装置、计算机设备及存储介质,该方法包括:应用程序启动,并创建至少两个线程;获取应用程序使用ALSA配置的采样属性,根据采样属性确定音频数据读取耗时;基于音频数据读取耗时确定线程睡眠时长,将至少两个线程保持睡眠状态并持续线程睡眠时长;根据多线程同步启动机制在同一时间点启动至少两个线程;至少两个线程通过ALSA

API读取对应声卡的音频数据;将音频数据储存至应用程序中与至少两个线程对应的用户缓存区中。本专利技术可以使应用程序在多线程的环境下进行读取音频数据时,能保证多个声卡都可以同时传送音频数据给应用程序,使得应用程序读取到的音频数据是时间对齐的。
附图说明
[0022]为了更清楚地说明本专利技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023]图1为本专利技术实施例提供的多声卡的音频数据读取对齐方法的流程示意图;
[0024]图2为本专利技术实施例提供的多声卡的音频数据读取对齐装置的示意性框图;
[0025]图3为本专利技术实施例提供的计算机设备的示意性框图。
具体实施方式
[0026]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0027]应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示
所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0028]还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本专利技术。如在本专利技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0029]还应当进一步理解,在本专利技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0030]本专利技术实施例提供了一种多声卡的音频数据读取对齐方法、装置、设备及介质,本专利技术实施例中的多声卡的音频数据读取对齐方法应用于车机系统中,车机系统中设置有处理器、存储器,以及应用程序,其中应用程序被存储于存储器中,并配置为由处理器执行以实现多声卡的音频数据读取对齐方法,从而使得基于时间对齐读取的音频数据为前提开发的功能(例如语音唤醒功能)能够正常使用。...

【技术保护点】

【技术特征摘要】
1.一种多声卡的音频数据读取对齐方法,其特征在于,包括:应用程序启动,并创建至少两个线程;获取所述应用程序使用ALSA配置的采样属性,根据所述采样属性确定音频数据读取耗时;基于所述音频数据读取耗时确定线程睡眠时长,将所述至少两个线程保持睡眠状态并持续所述线程睡眠时长;根据多线程同步启动机制在同一时间点启动所述至少两个线程;所述至少两个线程通过ALSA

API读取对应声卡的音频数据;将所述音频数据储存至所述应用程序中与所述至少两个线程对应的用户缓存区中。2.根据权利要求1所述的多声卡的音频数据读取对齐方法,其特征在于,所述获取所述应用程序使用ALSA配置的采样属性,根据所述采样属性确定音频数据读取耗时,包括:获取预先存储的数据读取耗时转换策略,根据所述数据读取耗时转换策略将所述采样属性转换为音频数据读取耗时。3.根据权利要求1所述的多声卡的音频数据读取对齐方法,其特征在于,所述基于所述音频数据读取耗时确定线程睡眠时长,将所述至少两个线程保持睡眠状态并持续所述线程睡眠时长,包括:将所述音频数据读取耗时减少预设时长,得到所述线程睡眠时长;将所述至少两个线程保持睡眠状态并持续所述线程睡眠时长。4.根据权利要求1所述的多声卡的音频数据读取对齐方法,其特征在于,所述根据多线程同步启动机制在同一时间点启动所述至少两个线程,包括:若检测到所述至少两个线程中的任意一个线程进入至准备状态,则检测所述至少两个线程中的其他线程是否均进入至准备状态;若检测到所述至少两个线程中的其他线程均进入至准备状态,则将所述至少两个线程中的所有线程均同时启动。5.根据权利要求1所述的多声卡的音频数据读取对齐方法,其特征在于,所述至少两个线程通过ALSA

API读取对应声卡的音...

【专利技术属性】
技术研发人员:张光曙姜树红涂庆裕
申请(专利权)人:北斗星通智联科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1