一种基于OPUS的语音传输方法和设备及系统技术方案

技术编号:20567650 阅读:22 留言:0更新日期:2019-03-14 09:57
本发明专利技术实施例提出了一种基于OPUS的语音传输方法和设备及系统,本发明专利技术提出的方案通过DMA接收标记以及数据提取之后变更切换标记,实现对音频数据的精准定位提取,避免遗漏,且后续进一步通过预先判断发送数据缓冲区是否有空间,以及是否需要编码,以此避免缓冲区溢出,且对是否需要编码进行判断,避免对所有音频数据都进行编码,减少待编码的数据量,降低CPU的使用率,且通过OPUS算法进行压缩编码,降低了数据传输量,以此对于一般处理能力不强的嵌入式设备也可以应用,且还解决了缓冲区溢出的技术问题,能更好的进行语音的数据传输,尽可能避免语音数据的传输出现问题。

【技术实现步骤摘要】
一种基于OPUS的语音传输方法和设备及系统
本专利技术涉及数据传输领域,特别涉及一种基于OPUS的语音传输方法和设备及系统。
技术介绍
目前市面上的蓝牙音箱或耳机,都是采用经典蓝牙技术来做的,并且方案成熟,应用极广,它从硬件层面就实现了无线传输对接和音频编解码两个重要的核心技术,传输稳定可靠;所以用经典蓝牙来听音乐是首选。但是在人声识别和翻译领域,对音质要求不高的情况下,也可以采用BLE通信技术来做音频传输,用BLE的好处是更灵活,拓展性强,因为每台手机可以连接多个BLE设备同时工作,而且还不影响经典蓝牙音箱的连接,而如果只是经典蓝牙在播放音频就只能同时工作一个设备,在双人进行对话翻译的时候就非常不方便。用BLE来做音频人声传输的问题主要是无线通信的带宽要够,能够支持到大量音频数据的传输,而这个问题是由两个因素决定的,一个是传输速率尽可能的快,这个要通过提高数据吞吐率来解决,另一个是数据量要尽可能的少,这个要通过数据的压缩编码来解决,所以只要传输率高于声音播放速率就可以实现BLE在音频传输的应用。目前已有的压缩编解码算法都比较复杂,且在数据传输时容易出现缓冲区溢出的现象,一则需要消耗的CPU资源较大,要求处理能力高,目前无法用于在嵌入式设备上,且导致数据传输容易出现问题。
技术实现思路
有鉴于此,本专利技术提出了一种基于OPUS的语音传输方法和设备及系统。能有效降低CPU使用率,对于一般处理能力不强的嵌入式设备也可以应用,且还解决了缓冲区溢出的技术问题,能更好的进行语音的数据传输,尽可能避免语音数据的传输出现问题。具体的,本专利技术提出了以下具体的实施例:本专利技术实施例提出了一种基于OPUS的语音传输方法,应用于包括发送端与接收端的系统中,该方法包括:发送端通过I2S接口的DMA机制接收音频数据,将所接收的音频数据存储在DMA缓冲区,并在触发DMA机制中断成后将DMA接收标注标记为已接收;所述发送端执行循环查询任务,以查询所述DMA接收标记是否标记为已接收;若查询结果为是,则从所述DMA缓冲区提取音频数据,并将所述DMA接收标记变更为未接收;所述发送端判断预设的发送数据缓冲区是否有空间写入所述音频数据;若判断结果为是,则判断所述音频数据是否需要编码;若判断结果为是,则调用OPUS算法的压缩编码函数对所述音频数据进行压缩编码,生成数据包;所述发送端通过预设的网络接口将所述数据包发送给接收端,以使所述接收端基于所述OPUS算法对所接收的数据包进行解码。在一个具体的实施例中,若查询结果为所述DMA接收标记的标记不是已接收,则执行“通过预设的网络接口将压缩编码后的音频数据发送给接收端”的流程。在一个具体的实施例中,若预设的发送数据缓冲区没有空间写入所述音频数据,则提示发送缓冲区数据已满,并执行“通过预设的网络接口将压缩编码后的音频数据发送给接收端”的流程。在一个具体的实施例中,若判断所述音频数据不需要编码,则忽略所述音频数据,并执行“通过预设的网络接口将压缩编码后的音频数据发送给接收端”的流程。在一个具体的实施例中,所述“发送端通过预设的网络接口将所述数据包发送给接收端”,包括:发送端判断发送数据缓冲区是否存在音频数据;若判断结果为是,则读取一帧所述数据缓冲区中的音频数据进行格式封装,并加入预设的包头序号,以生成数据包;通过预设的网络接口执行将所述数据包发送给接收端的操作。在一个具体的实施例中,若发送端判断发送数据缓冲区不存在音频数据,则执行循环查询任务。在一个具体的实施例中,在通过预设的网络接口将所述数据包发送给接收端,之后还包括:所述发送端接收所述接收端的反馈信息;若所述反馈信息为接收成功,则执行循环查询任务;若所述反馈信息为接收不成功,则查询所述DMA接收标记是否标记为已接收;若查询结果为是,则执行“从所述DMA缓冲区提取音频数据,并所述DMA接收标记变更为未接收”的流程;若查询结果为否,则执行“通过预设的网络接口执行将所述数据包发送给接收端的操作”的流程。在一个具体的实施例中,所述网络接口为:BLE接口、WIFI接口、2G接口、3G接口、4G接口、5G接口中的一种或多种。在一个具体的实施例中,所述OPUS算法的编码解码方式包括voice方式与music方式;当所述发送端的处理能力弱于所述接收端的处理能力时,所述发送端通过所述music方式来进行编码;所述接收端通过所述music方式来进行解码;当所述发送端的处理能力强于所述接收端的处理能力时,所述发送端通过所述voice方式来进行编码;所述接收端通过所述voice方式来进行解码。本专利技术实施例还提出了一种基于OPUS的语音传输系统,应用于包括发送端与接收端的系统中,其中,所述发送端,用于通过I2S接口的DMA机制接收音频数据,将所接收的音频数据存储在DMA缓冲区,并在触发DMA机制中断成后将DMA接收标注标记为已接收;执行循环查询任务,以查询所述DMA接收标记是否标记为已接收;若查询结果为是,则从所述DMA缓冲区提取音频数据,并将所述DMA接收标记变更为未接收;判断预设的发送数据缓冲区是否有空间写入所述音频数据;若判断结果为是,则判断所述音频数据是否需要编码;若判断结果为是,则调用OPUS算法的压缩编码函数对所述音频数据进行压缩编码,生成数据包;通过预设的网络接口将所述数据包发送给接收端,以使所述接收端基于所述OPUS算法对所接收的数据包进行解码;所述接收端,用于获取发送端所发送的数据包;通过OPUS算法对所述数据包进行解码,以获取数据包中的音频数据;控制播放所述音频数据。在一个具体的实施例中,所述“接收端获取发送端所发送的数据包”,包括:接收端通过预设的连接发送端的网络接口进行接收操作,以在接收中断后获取数据包;对所述数据包进行解析,以判断所述数据包是否合法;若判断结果为是,则判断预设的接收数据缓冲区是否有空间写入所述数据包;若判断结果为是,则将所述数据包写入所述接收数据缓冲区。在一个具体的实施例中,若判断所述数据包不合法,则丢弃所述数据包。在一个具体的实施例中,若判断预设的接收数据缓冲区没有空间写入所述数据包,则提示所述接收数据缓冲区中的数据已满。在一个具体的实施例中,所述“接收端通过OPUS算法对所述数据包进行解码,以获取数据包中的音频数据”,包括:执行循环查询任务;查询所述接收数据缓冲区是否存在要填入I2S接口播放的数据长度的数据包;若查询结果为是,则判断是否需要给I2S接口填充播放数据;若判断结果为是,则提取符合所述数据长度的数据包,并调用OPUS算法对所述数据包进行解码,以获取音频数据。在一个具体的实施例中,若查询结果为所述接收数据缓冲区不存在要填入I2S接口播放的数据长度的数据包,则执行循环查询任务;在一个具体的实施例中,若判断不需要给I2S接口填充播放数据,则执行循环查询任务。在一个具体的实施例中,所述“接收端控制播放所述音频数据”,包括:所述接收端将所述音频数据填充到I2S接口中进行播放。在一个具体的实施例中,在接收端将所述音频数据填充到I2S接口中进行播放,之后还包括:执行循环查询任务。本专利技术实施例还提出了一种发送端,应用于包括发送端与接收端的系统中,该发送端包括:获取模块,用于通过I2S接口的DMA机制接收音频数据,将所接收的音频数据存本文档来自技高网...

【技术保护点】
1.一种基于OPUS的语音传输方法,其特征在于,应用于包括发送端与接收端的系统中,该方法包括:发送端通过I2S接口的DMA机制接收音频数据,将所接收的音频数据存储在DMA缓冲区,并在触发DMA机制中断成后将DMA接收标注标记为已接收;所述发送端执行循环查询任务,以查询所述DMA接收标记是否标记为已接收;若查询结果为是,则从所述DMA缓冲区提取音频数据,并将所述DMA接收标记变更为未接收;所述发送端判断预设的发送数据缓冲区是否有空间写入所述音频数据;若判断结果为是,则判断所述音频数据是否需要编码;若判断结果为是,则调用OPUS算法的压缩编码函数对所述音频数据进行压缩编码,生成数据包;所述发送端通过预设的网络接口将所述数据包发送给接收端,以使所述接收端基于所述OPUS算法对所接收的数据包进行解码。

【技术特征摘要】
1.一种基于OPUS的语音传输方法,其特征在于,应用于包括发送端与接收端的系统中,该方法包括:发送端通过I2S接口的DMA机制接收音频数据,将所接收的音频数据存储在DMA缓冲区,并在触发DMA机制中断成后将DMA接收标注标记为已接收;所述发送端执行循环查询任务,以查询所述DMA接收标记是否标记为已接收;若查询结果为是,则从所述DMA缓冲区提取音频数据,并将所述DMA接收标记变更为未接收;所述发送端判断预设的发送数据缓冲区是否有空间写入所述音频数据;若判断结果为是,则判断所述音频数据是否需要编码;若判断结果为是,则调用OPUS算法的压缩编码函数对所述音频数据进行压缩编码,生成数据包;所述发送端通过预设的网络接口将所述数据包发送给接收端,以使所述接收端基于所述OPUS算法对所接收的数据包进行解码。2.如权利要求1所述的一种基于OPUS的语音传输方法,其特征在于,若查询结果为所述DMA接收标记的标记不是已接收,则执行“通过预设的网络接口将压缩编码后的音频数据发送给接收端”的流程。3.如权利要求1所述的一种基于OPUS的语音传输方法,其特征在于,若预设的发送数据缓冲区没有空间写入所述音频数据,则提示发送缓冲区数据已满,并执行“通过预设的网络接口将压缩编码后的音频数据发送给接收端”的流程。4.如权利要求1所述的一种基于OPUS的语音传输方法,其特征在于,若判断所述音频数据不需要编码,则忽略所述音频数据,并执行“通过预设的网络接口将压缩编码后的音频数据发送给接收端”的流程。5.如权利要求1所述的一种基于OPUS的语音传输方法,其特征在于,所述“发送端通过预设的网络接口将所述数据包发送给接收端”,包括:发送端判断发送数据缓冲区是否存在音频数据;若判断结果为是,则读取一帧所述数据缓冲区中的音频数据进行格式封装,并加入预设的包头序号,以生成数据包;通过预设的网络接口执行将所述数据包发送给接收端的操作。6.如权利要求5所述的一种基于OPUS的语音传输方法,其特征在于,若发送端判断发送数据缓冲区不存在音频数据,则执行循环查询任务。7.如权利要求5所述的一种基于OPUS的语音传输方法,其特征在于,在通过预设的网络接口将所述数据包发送给接收端,之后还包括:所述发送端接收所述接收端的反馈信息;若所述反馈信息为接收成功,则执行循环查询任务;若所述反馈信息为接收不成功,则查询所述DMA接收标记是否标记为已接收;若查询结果为是,则执行“从所述DMA缓冲区提取音频数据,并所述DMA接收标记变更为未接收”的流程;若查询结果为否,则执行所述“通过预设的网络接口执行将所述数据包发送给接收端的操作”的流程。8.如权利要求1所述的一种基于OPUS的语音传输方法,其特征在于,所述网络接口为:BLE接口、WIFI接口、2G接口、3G接口、4G接口、5G接口中的一种或多种。9.如权利要求1所述的一种基于OPUS的语音传输方法,其特征在于,所述OPUS算法的编码解码方式包括voice方式与music方式;当所述发送端的处理能力弱于所述接收端的处理能力时,所述发送端通过所述music方式来进行编码;所述接收端通过所述music方式来进行解码;当所述发送端的处理能力强于所述接收端的处理能力时,所述发送端通过所述voice方式来进行编码;所述接收端通过所述voice方式来进行解码。10.一种基于OPUS的语音传输系统,其特征在于,应用于包括接收端与权利要求1-9中任意一项所述的发送端的系统中,其中,所述发送端,用于通过I2S接口的DMA机制接收音频数据,将所接收的音频数据存储...

【专利技术属性】
技术研发人员:柯佳俊田力
申请(专利权)人:深圳时空壶技术有限公司
类型:发明
国别省市:广东,44

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

1