在声波传输数据时播放音乐的方法及系统与流程

文档序号:14721484发布日期:2018-06-17 16:15阅读:460来源:国知局

本发明涉及数据传输技术领域,尤其涉及一种在声波传输数据时播放音乐的方法及系统。



背景技术:

目前,现有的通信设备之间通过网络或无线的方式收发数据。一般在设备之间传输信息的方式有:1)通过网络直接传送,如通过聊天软件传送;2)通过网络间接传送,如邮件和云盘;3)蓝牙,需要配对,且只能点到点传送;4)二维码;5)NFC。例如,手机之间或手机与电脑之间的通信方式有蓝牙、WIFI、红外等方式,但对设备的硬件配置要求较高,并且对使用的场景要求比较严格,不便于进行手机现场支付、与手机之间互传私密资料等要求较高的场景。

声波传输是利用声音实现快速传输的技术,能够在发送声波与接收声波的智能设备之间的建立数据传输。声音是全向传播的,通过将信息编码在声音里进行传播,无需联网就可达到广播的目的。例如,音频二维码使用特定频率代表特定的字符;DTMF双音多频,由高频群和低频群组成,高低频群各包含4个频率。一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。目前的声波传输数据,发送的声波仅包含数据信息,声音听起来很单调,类似电话拨号声,声音不连续,没有韵律感,影响用户的感受度。



技术实现要素:

有鉴于此,本发明要解决的一个技术问题是提供一种在声波传输数据时播放音乐的方法,能够在进行声波传输数据时播放音乐。

一种在声波传输数据时播放音乐的方法,其中:将传输数据转换到对应的声波频率上生成音频信息,并将所述音频信息填充到多声道的一个或多个声道中;读取曲谱文件,基于所述曲谱文件生成音乐信号;在播放所述音频信息时播放所述音乐信号,并将所述音乐信号填充到多声道中未填充音频信息的一个或多个声道中。

根据本发明的一个实施例,进一步的,将所述音频信息和所述音乐信号填充到不同的声道进行播放。

根据本发明的一个实施例,进一步的,所述基于所述曲谱文件生成音乐信号包括:解析所述曲谱文件,获取音符简谱数字、音调符号、节拍符号,并计算每个音符的持续的时间;将每个音符简谱数字和与此音符简谱数字相对应的音调符号、节拍符号组成合成音信息;设置曲谱音频表,从所述曲谱音频表中获取与音符简谱数字和音调符号对应的音调频率;生成合成音信息的音调频率信号S1为:

S1=0.8*sin(2.0*M_PI*f*j*T);0=<j<pitchTime;其中,f为音调频率,ptichTime为节拍时间,M_PI为π。

根据本发明的一个实施例,进一步的,所述将传输数据转换到对应的声波频率上生成音频信息包括:计算所述传输数据的检错码和纠错码,并将所述检错码和纠错码添加到所述传输数据中;将所述传输数据转换到对应的声波频率上,生成连续的音频信息;其中,所述音频信息的每个音节包含1个或多个频率信号。

根据本发明的一个实施例,进一步的,所述计算传输数据的检错码和纠错码、并将所述检错码和纠错码添加到所述传输数据中包括:生成传输数据数组,将数据头数据添加到所述传输数据数组中;计算版本号和传输数据长度的检验码和纠错码,版本号数字、传输数据长度、版本号和传输数据长度的检验码和纠错码组成版本数据,将所述版本数据添加到所述传输数据数组中;将待传输数据进行分段处理,形成长度相同的多段子数据,并为每段子数据生成检错码和纠错码,将每段子数据、每段子数据的检错码和纠错码组成分段数据,将所述分段数据添加到所述传输数据数组中;对多个所述分段数据进行交叉处理。

根据本发明的一个实施例,进一步的,所述版本号数字、传输数据长度、版本号和传输数据长度的检验码和纠错码组成版本数据包括:版本号为16进制数D0、传输数据长度为2个16进制数D1、D2;版本号和传输数据长度的检验码为D3;如果D1不等于0并且D2不等于0,则D3=(D1*D2+D0)%16;否则,D3=(D1+D2+D0)%16;对版本号、传输数据长度、版本号和传输数据长度的检验码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

根据本发明的一个实施例,进一步的,为每段子数据生成检错码和纠错码,将每段子数据、每段子数据的检错码和纠错码组成分段数据包括:将每段子数据中的各个数乘以预设的加权系数并求和,然后除以8生成商跟余数,然后将商跟余数的和除以8求模,生成每段子数据的检错码;对每段子数据、每段子数据的检错码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

根据本发明的一个实施例,进一步的,所述对多个所述分段数据进行交叉处理包括:从所述传输数据数组中获取所述多个所述分段数据;将每个所述分段数据按行填充到矩阵中,并从此矩阵中按列依次提取多组数据,形成转换数据;将所述转换数据替换所述分段数据添加到所述传输数据数组中。

根据本发明的一个实施例,进一步的,当接收到所述音频信息时,根据所述音频信息中增加的时间窗同步对齐,解析出频率信号并对所述频率信号进行解码,依次解析出数据头数据、版本数据和待传输数据。

本发明要解决的一个技术问题是提供一种在声波传输数据时播放音乐的装置,能够在进行声波传输数据时播放音乐。

一种在声波传输数据时播放音乐的装置,包括:数据音频生成单元,用于将传输数据转换到对应的声波频率上生成音频信息,并将所述音频信息填充到多声道的一个或多个声道中;曲谱音频生成单元,用于读取曲谱文件,基于所述曲谱文件生成音乐信号,并将所述音乐信号填充到多声道中未填充音频信息的一个或多个声道中;音频播放单元,用于在播放所述音频信息时播放所述音乐信号。

根据本发明的一个实施例,进一步的,所述曲谱音频生成单元,包括:解析子模块,用于解析所述曲谱文件,获取音符简谱数字、音调符号、节拍符号,并计算每个音符的持续的时间;将每个音符简谱数字和与此音符简谱数字相对应的音调符号、节拍符号组成合成音信息;音频子模块,用于设置曲谱音频表,从所述曲谱音频表中获取与音符简谱数字和音调符号对应的音调频率;信号子模块,用于生成合成音信息的音调频率信号S1:

S1=0.8*sin(2.0*M_PI*f*j*T)*w[j];0=<j<pitchTime;其中,f为音调频率,ptichTime为节拍时间,M_PI为π。

根据本发明的一个实施例,进一步的,所述数据音频生成单元,还用于计算所述传输数据的检错码和纠错码,并将所述检错码和纠错码添加到所述传输数据中;将所述传输数据转换到对应的声波频率上,生成连续的音频信息;其中,所述音频信息的每个音节包含1个或多个频率信号

根据本发明的一个实施例,进一步的,所述数据音频生成单元,包括:数组生成子模块,用于生成传输数据数组头数据编码子模块,用于将数据头数据添加到所述传输数据数组中;版本数据编码子模块,用于计算版本号和传输数据长度的检验码和纠错码,版本号数字、传输数据长度、版本号和传输数据长度的检验码和纠错码组成版本数据,将所述版本数据添加到所述传输数据数组中;传输数据编码子模块,用于将待传输数据进行分段处理,形成长度相同的多段子数据,并为每段子数据生成检错码和纠错码,将每段子数据、每段子数据的检错码和纠错码组成分段数据,将所述分段数据添加到所述传输数据数组中;对多个所述分段数据进行交叉处理。

根据本发明的一个实施例,进一步的,版本号为16进制数D0、传输数据长度为2个16进制数D1、D2;版本号和传输数据长度的检验码为D3;所述版本数据编码子模块,用于如果D1不等于0并且D2不等于0,则计算D3=(D1*D2+D0)%16;否则,计算D3=(D1+D2+D0)%16;对版本号、传输数据长度、版本号和传输数据长度的检验码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

根据本发明的一个实施例,进一步的,所述传输数据编码子模块,还用于将每段子数据中的各个数乘以预设的加权系数并求和,然后除以8生成商跟余数,然后将商跟余数的和除以8求模,生成每段子数据的检错码;对每段子数据、每段子数据的检错码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

根据本发明的一个实施例,进一步的,所述传输数据编码子模块,还用于从所述传输数据数组中获取所述多个所述分段数据;将每个所述分段数据按行填充到矩阵中,并从此矩阵中按列依次提取多组数据,形成转换数据;将所述转换数据替换所述分段数据添加到所述传输数据数组中。

本发明的在声波传输数据时播放音乐的方法及系统,在播放数据声波的同时播放音乐,让播放的声音不显得单调,提高用户的听觉体验,并且在传输数据时,同一音节内包含多种频率,增加了每一个音节的可编码信息,提高了码率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的流程图;

图2为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的发送端编码的流程图;

图3为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的生成音乐信号的流程图;

图4为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的接收端同步对齐解码数据头的流程图;

图5为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的接收端解码版本号及数据长度的流程图;

图6为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的接收端解码数据的流程图;

图7为根据本发明的在声波传输数据时播放音乐的装置的一个实施例的示意图;

图8为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的曲谱音频生成单元的示意图;

图9为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的数据音频生成单元的示意图。

具体实施方式

下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的流程图,如图1所示:

步骤101,将传输数据转换到对应的声波频率上生成音频信息,并将音频信息填充到左声道或右声道,也可以将音频信息填充到多声道的一个或多个声道中。

步骤102,读取曲谱文件,基于曲谱文件生成音乐信号,并将音乐信号填充到右声道或左声道,也可以将所述音乐信号填充到多声道中未填充音频信息的一个或多个声道中。

步骤103,在播放音频信息时播放音乐信号。

音频信息和音乐信号可以填充到不同的声道进行播放,也可以填充到相同的声道进行播放。例如,多声道为DolbyDigital环绕声系统,由5个全频域声道和1个超低音声道组成,也称为5.1声道,5个声道分别是左前、右前、前中置、左环绕和右环绕,可以将音乐信号和音频信息填充到这5个声道的一个或多个声道中。

本发明的在声波传输数据时播放音乐的方法,可以同时播放数据声波信号和音乐信号,音乐信号可以是上述产生的曲谱信号,也可以是一段歌曲、一段语音等其他声音信号。

在播放数据声波的同时播放音乐,让播放的声音不显得单调,提高播放声音的听觉体验,播放数据声波的同时播放音乐、歌曲、语音等声音,提高播放声音的韵律感和节奏感,提高播放声音的听觉感受,并且对数据的传输没有影响。

在一个实施例中,生成传输数据数组,将数据头数据添加到传输数据数组中。计算版本号和传输数据长度的检验码和纠错码,版本号数字、传输数据长度、版本号和传输数据长度的检验码和纠错码组成版本数据,将版本数据添加到传输数据数组中。

将待传输数据进行分段处理,形成长度相同的多段子数据,并为每段子数据生成检错码和纠错码,将每段子数据、每段子数据的检错码和纠错码组成分段数据,将分段数据添加到传输数据数组中。对多个分段数据进行交叉处理。

图2为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的发送端编码的流程图;如图2所示:

步骤201,读取频率配置文件。

步骤202,添加代表数据头的16进制数字到数组。

步骤203,计算版本号(16进制)和数据长度(16进制)检错码及纠错码。

步骤204,将版本号和数据长度及其纠错码添加到数组。

步骤205,将待通过声波发送的字符串(8进制)分段。

步骤206,判断是否到了最后一段,如果是,则进入步骤207,添加最后一段数据的检错码;如果否,则进入步骤208,对每一段数据都添加检错码及纠错码。

步骤209,将每一段数据及其检错码和纠错码添加到数组中。

步骤210,补齐数组空余,将剩余的位数用0补齐。此数组为2维数组。可以使用一个数组,也可以使用不同的数组放置版本号和数据长度及其纠错码、每一段数据等等。

步骤211,将数组中的数据做交插处理。

步骤212,将数据头产生单频声波信号。

步骤213,将版本号和数据长度及其纠错码产生三频声波信号。

步骤214,将交插后的数据及其检错码和纠错码产生八频声波信号。

步骤215,对声波信号做增益补偿。

步骤216,对每一个音节的声波信号加时间窗,一般为平滑窗。

步骤217,将声波信号转换为可播放的格式的音频文件,例如WAV、MP3等等。

步骤218,播放此音频文件。

在一个实施例中,版本号为16进制数D0、传输数据长度为2个16进制数D1、D2;版本号和传输数据长度的检验码为D3。如果D1不等于0并且D2不等于0,则D3=(D1*D2+D0)%16;否则,D3=(D1+D2+D0)%16。

对版本号、传输数据长度、版本号和传输数据长度的检验码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

例如,生成版本号及数据长度检错码:在数组中,data[0]为16进制版本号,data[1]、data[2]为16进制数据长度,data[3]为检错码。如果data[1]!=0&&data[2]!=0,则data[3]=(data[1]*data[2]+data[0])%16;否则data[3]=(data[1]+data[2]+data[0])%16。

在一个实施例中,将每段子数据中的各个数乘以预设的加权系数并求和,然后除以8生成商跟余数,然后将商跟余数的和除以8求模,生成每段子数据的检错码;对每段子数据、每段子数据的检错码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

对多个分段数据进行交叉处理为:从传输数据数组中获取多个分段数据;将每个分段数据按行填充到矩阵中,并从此矩阵中按列依次提取多组数据,形成转换数据。将转换数据替换分段数据添加到传输数据数组中。

在一个实施例中,分段数据检错码产生方法为:先将每段数据乘以加权系数并求和,然后将和除以8产生商跟余数,然后将商跟余数的和除以8求模。最终数据检错码产生方法为:将所有数据相加,然后将和除以8求膜。每个分段数据的纠错码产生方法为:里的-所罗门编码。交插方法为:先将数据按行填充到矩阵,然后按列提取。

上述实施例中的基于多频声波的数据传输方法,采用交插的方式分散连续错误,提高纠错抗干扰能力,并生成带有纠错码的RS码,采用两种检错方式和两种纠错方式混合使用,能够提高纠错抗干扰能力。

在一个实施例中,单频数据头信号产生,根据16进制数据头数据在数据头频率表中选取数据产生单频信号的方法为:预设单频频率表,根据数据头数据在单频频率表中选取数据生成单频信号:单频信号为:

sin(2.0*M_PI*twofTable[0][num1]*i*T);

twofTable为单频频率表,即为2维数组,num1为数据头数据,例如,当数据头数据num1=3时,查找twofTable[0][3]的位置的数据,即为所需的频率。T为周期,M_PI为π,0=<i<NFRAME,NFRAME为帧长,为音频信息中的音频帧的长度。twofTable为单频频率表,其频率与多频频率表错开,num1为数据头数据。

在一个实施例中,设置三频频率表,对版本数据产生3频信号。将16进制的版本数据以3个为一组分成多个组数据,根据先后顺序在三频频率表中选择相应的频率合成3频信号。

3频信号分别为:

0.3*sin(2.0*M_PI*threefTable[0][num1]*i*T)、

0.3*sin(2.0*M_PI*threefTable[1][num2]*i*T)、

0.4*sin(2.0*M_PI*threefTable[2][num3]*i*T));

threefTable为三频频率表,num1,num2,num3为同一时间发送的组数据中的3个数据,T为周期,M_PI为π,0=<i<NFRAME,NFRAME为帧长,为音频信息中的音频帧的长度。

在一个实施例中,生成三频版本号及数据长度信号为:16进制版本号及数据长度以3个为一组,根据先后顺序在相应的频率表中选择相应位置上的频率合成3频信号

(0.3*sin(2.0*M_PI*threefTable[0][num1]*i*T)+

0.3*sin(2.0*M_PI*threefTable[1][num2]*i*T)+

0.4*sin(2.0*M_PI*threefTable[2][num3]*i*T));

其中threefTable为3频频率表,num1,num2,num3为同一时间发送的3个信号。

对信号同比扩大信号峰值到1,提高播放增益。

在一个实施例中,预设矩阵频率表,从传输数据数组中获取转换数据,转换数据为八进制数据。以8个八进制数为一组将转换数据分为多个在同一时间发送的发送数字串,根据发送数字串中数字的先后顺序在预设矩阵频率表中选择相应的频率合成8频信号。转换数据的各个八进制数产生的8频信号为:

sig[i]+=sigcoeff[k]*sin(2.0*M_PI*fTable[k][num[k]]*i*T);

其中,fTable为矩阵频率表,num[k]为同一时间发送数字串中的第k个八进制数据,sigcoeff[k]为对代表发送数字串中第k个八进制数据的信号的加权系数,T为周期,M_PI为π,0=<i<NFRAME,NFRAME为帧长,为音频信息中的音频帧的长度。

在一个实施例中,转换数据可以为八进制、十六进制等等,下面以八进制为例,生成八频数据信号。8进制数据以8个为一组,根据先后顺序在相应的频率表中选择相应位置上的频率合成8频信号:

sig[i]+=sigcoeff[k]*sin(2.0*M_PI*fTable[k][num[k]]*i*T);

fTable为8频频率表,num[k],为同一时间发送的8个数据,sigcoeff为加权系数以降低高频衰减的影响。

对8频信号同比扩大信号峰值到1,提高播放增益。

8频频率表fTable的频率生成公式为:

fTable[i][j]=basefreq+(i*FREQ_PER_GROUP+j)*(freqgap);

0=<i<FREQ_GROUP_NUM;0=<j<FREQ_PER_GROUP。

此公式用来产生代表数据的频率表fTable,FREQ_GROUP_NUM为频率组数,FREQ_PER_GROUP为每组包含的频率数,basefreq为基频,freqgap为频率间隔。

例如,待发送的一段数据为76543210,fTable为一个8*8的矩阵频率表,7位于第一位置,于是选取第一组频率第8个位置上的频率fTable[0][7](注:下标从0开始)和系数sigcoeff[0]。

6位于第二位置,于是选取第二组频率第7个位置上的频率fTable[1][6]和系数sigcoeff[1]。

5位于第三位置,于是选取第三组频率第6个位置上的频率fTable[2][5]和系数sigcoeff[1]。

依此类推,分别产生相应的信号再相加,即

sigcoeff[0]*sin(2.0*M_PI*fTable[0][7]*i*T)+

sigcoeff[1]*sin(2.0*M_PI*fTable[1][6]*i*T)+

sigcoeff[2]*sin(2.0*M_PI*fTable[2][5]*i*T)+

sigcoeff[3]*sin(2.0*M_PI*fTable[3][4]*i*T)+

sigcoeff[4]*sin(2.0*M_PI*fTable[4][3]*i*T)+

sigcoeff[5]*sin(2.0*M_PI*fTable[5][2]*i*T)+

sigcoeff[6]*sin(2.0*M_PI*fTable[6][1]*i*T)+

sigcoeff[7]*sin(2.0*M_PI*fTable[7][0]*i*T)。

0=<i<NFRAME,NFRAME为帧长,这个信号在同一段时间内就包含了76543210这8个数据信息。fTable中的8组频率的带宽互不重叠。

在一个实施例中,当接收到音频信息时,根据音频信息中增加的时间窗同步对齐,解析出频率信号并对频率信号进行解码,依次解析出数据头数据、版本数据和待传输数据。

图3为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的生成音乐信号的流程图;如图3所示:

步骤301,循环读取曲谱文件。

步骤302,得到代表简谱的数字。

步骤303,得到代表音调的符号。

步骤304,得到代表节拍的符号。

步骤305,计算每个音的持续时间。

步骤306,产生音乐信号。

步骤307,填充到右声道。

在一个实施例中,可以采用数字1-7代表“斗、瑞、咪、发、搜、拉、希”的简谱,符号+、-、=等分别代表高C调中C调和低C调等音调,符号!、、#、$、%、.、*分别代表全拍、1/2拍、1/4拍、1/8拍、1/16拍、3/2拍和2拍。

定义每分钟60拍,即一拍为1秒,高C调的频率为{1047,1175,1319,1397,1568,1760,1976};中C调的频率为{523,587,659,698,784,880,988};低C调的频率为{262,294,330,349,392,440,494};单位为Hz。

曲谱文件中3个为一组,代表一个音,比如6=!表示全拍的低C调的“拉”音,即频率为440Hz,时间为1秒,这个音的信号计算公式为0.8*sin(2.0*M_PI*f*j*T)*w[j];0=<j<pitchTime其中f选择440Hz,ptichTime选择1秒即可,w[j]为窗函数。循环每3个为一组读取曲谱文件,产生相应的音节组合成音乐

图4为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的接收端同步对齐解码数据头的流程图,如图4所示:

步骤401,保存连续3帧音频。数据头为两个16进制数。

步骤402,计算中间帧包含的频率。

步骤403,计算频率对应的数字。

步骤404,判断数字是否为数据头,如果是,则进入步骤405。

步骤405,将3帧音频分子帧,计算每个子帧对应的数字。

步骤406,若至少连续4个子帧对应的数字等于数据头。

步骤407,解码数据头。

步骤408,拷贝剩余数据用于解码数据头,剩余的数据已同步对齐。

在一个实施例中,获取加载转换数据的音频帧,使用goertzel算法检测每个音频帧包含的多个频率,并保存与多个频率相对应的音强能量;采用Goertzel基本算法能得出与常规离散傅立叶变换(DFT)或FFT相同的频率实部和虚部。

按照音强能量由高到低的顺序,计算多个频率中每个频率包含的数据并进行RS解码,并根据编码时的交插规则转换回原有的顺序;当判断检错码正确时,则判断为待传输数据。

图5为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的接收端解码版本号及数据长度的流程图,如图5所示:

步骤501,获取加载有版本号及数据长度的音频帧。

步骤502,使用goertzel算法检测每帧包含的频率。

步骤503,计算每个频率对应的数据。

步骤504,当数据满6个时,进行rs解码。此步骤获取的数据数与RS编码采用的算法相关,例如RS(7,3)等。

步骤505,根据编码时的检错码生成规则计算检错码。

步骤506、507,判断版本号是否匹配并且接收到的检错码是否正确,如果是,则进入步骤508,数据长度解码成功,开始解码数据。

图6为根据本发明的在声波传输数据时播放音乐的方法的一个实施例的接收端解码数据的流程图;如图6所示:

步骤601,获取传输数据的音频帧。

步骤602,使用goertzel算法检测每帧最可能包含的频率,同时保存其次可能包含的频率,并保存相应能量的比值。

步骤603,根据频率计算最可能包含的数据和其次可能包含的数据。

步骤604,根据编码时的交插规则将数据变换回正确顺序。

步骤605,每一段都先用最可能包含的数据做rs解码。

步骤606,判断每段检错码是否正确,如果是则进入步骤608,判断最后一位检错码是否正确。如果否,则进入步骤607,根据能量比值从大到小的顺序依次替换相应位置上最可能包含的数据为其次可能包含的数据,并作rs解码。

步骤609,依次替换之后判断每段检错码是否正确,如果是则进入步骤608,如果否则进入步骤611,重新对齐并寻找数据头。

本发明的在声波传输数据时播放音乐的方法,在进行传输数据时,采用交插、分段校验、整体校验、rs纠错和替换纠错相结合的纠错方法。

播放数据声波信号的同时播放音乐,接收端接收到的是数据声波和音乐的混合信号,音乐对数据声波的信号不可避免。采用交插先将数据按行填充到矩阵,然后按列提取,这样可以分散连续错误,提高纠错能力。RS(7,5)码只能纠正一个错误,当错误大于1个时,可以通过替换疑似错误的码字,将错误数减少到小于1,再用RS(7,5)码纠正错误。

在传输数据时,能够在同一时间包含多种频率,增加了每一个音节的可编码信息,提高了码率,采用交插的方式分散连续错误,提高纠错抗干扰能力,具有两种检错方式和两种纠错方式混合使用,提高纠错抗干扰能力,并且解码前同步对齐,提高解码成功率。

如图7所示,本发明提供一种在声波传输数据时播放音乐的装置71。数据音频生成单元711将传输数据转换到对应的声波频率上生成音频信息,并将音频信息填充到左声道或右声道。曲谱音频生成单元712读取曲谱文件,基于曲谱文件生成音乐信号,并将音乐信号填充到右声道或左声道。音频播放单元713在播放音频信息时播放音乐信号。

如图8所示,曲谱音频生成单元81具有多个子模块。解析子模块811解析曲谱文件,获取音符简谱数字、音调符号、节拍符号,并计算每个音符的持续的时间。解析子模块811将每个音符简谱数字和与此音符简谱数字相对应的音调符号、节拍符号组成合成音信息。音频子模块812设置曲谱音频表,从曲谱音频表中获取与音符简谱数字和音调符号对应的音调频率;信号子模块813生成合成音信息的音调频率信号S1:

S1=0.8*sin(2.0*M_PI*f*j*T)*w[j];0=<j<pitchTime;其中,f为音调频率,ptichTime为节拍时间,M_PI为π。

在一个实施例中,数据音频生成单元711计算传输数据的检错码和纠错码,并将检错码和纠错码添加到传输数据中;将传输数据转换到对应的声波频率上,生成连续的音频信息;其中,音频信息的每个音节包含1个或多个频率信号。

在一个实施例中,如图9所示,数组生成子模块911生成传输数据数组。头数据编码子模块912将数据头数据添加到传输数据数组中。版本数据编码子模块913计算版本号和传输数据长度的检验码和纠错码,版本号数字、传输数据长度、版本号和传输数据长度的检验码和纠错码组成版本数据,将版本数据添加到传输数据数组中。

传输数据编码子模块914将待传输数据进行分段处理,形成长度相同的多段子数据,并为每段子数据生成检错码和纠错码,将每段子数据、每段子数据的检错码和纠错码组成分段数据,将分段数据添加到传输数据数组中;对多个分段数据进行交叉处理。

在一个实施例中,版本号为16进制数D0、传输数据长度为2个16进制数D1、D2;版本号和传输数据长度的检验码为D3。如果D1不等于0并且D2不等于0,则版本数据编码子模块813计算D3=(D1*D2+D0)%16;否则,计算D3=(D1+D2+D0)%16。

版本数据编码子模块913对版本号、传输数据长度、版本号和传输数据长度的检验码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

在一个实施例中,传输数据编码子模块914将每段子数据中的各个数乘以预设的加权系数并求和,然后除以8生成商跟余数,然后将商跟余数的和除以8求模,生成每段子数据的检错码。传输数据编码子模块914对每段子数据、每段子数据的检错码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

传输数据编码子模块914从传输数据数组中获取多个分段数据。传输数据编码子模块814将每个分段数据按行填充到矩阵中,并从此矩阵中按列依次提取多组数据,形成转换数据。传输数据编码子模块914将转换数据替换分段数据添加到传输数据数组中。

在一个实施例中,头数据音频生成子模块预设单频频率表,根据数据头数据在单频频率表中选取数据生成单频信号。单频信号为sin(2.0*M_PI*twofTable[0][num1]*i*T);其中twofTable为单频频率表,num1为数据头数据,T为周期,M_PI为π。

版本数据音频生成子模块设置三频频率表,对版本数据产生3频信号。其中,将16进制的版本数据以3个为一组分成多个组数据,根据先后顺序在三频频率表中选择相应的频率合成3频信号;3频信号分别为:

0.3*sin(2.0*M_PI*threefTable[0][num1]*i*T)、

0.3*sin(2.0*M_PI*threefTable[1][num2]*i*T)、

0.4*sin(2.0*M_PI*threefTable[2][num3]*i*T));

其中,threefTable为三频频率表,num1,num2,num3为同一时间发送的组数据中的3个数据,T为周期,M_PI为π。

传输数据音频生成子模块预设矩阵频率表,从传输数据数组中获取转换数据,转换数据为八进制数据。传输数据音频生成子模块913以8个八进制数为一组将转换数据分为多个在同一时间发送的发送数字串,根据发送数字串中数字的先后顺序在预设矩阵频率表中选择相应的频率合成8频信号;其中,转换数据的各个八进制数产生的8频信号为:

sig[i]+=sigcoeff[k]*sin(2.0*M_PI*fTable[k][num[k]]*i*T);其中fTable为矩阵频率表,num[k]为同一时间发送数字串中的第k个八进制数据,sigcoeff[k]为对代表发送数字串中第k个八进制数据的信号的加权系数,T为周期,M_PI为π。

在一个实施例中,当接收到音频信息时,音频解码单元722根据音频信息中增加的时间窗同步对齐,解析出频率信号并对频率信号进行解码,依次解析出数据头数据、版本数据和待传输数据。

传输数据音频解码子模块获取加载转换数据的音频帧,使用goertzel算法检测每个音频帧包含的多个频率,并保存与多个频率相对应的音强能量;按照音强能量由高到低的顺序,计算多个频率中每个频率包含的数据并进行RS解码,并根据编码时的交插规则转换回原有的顺序;当判断检错码正确时,则判断为待传输数据。

上述实施例提供的在声波传输数据时播放音乐的方法及系统,在播放数据声波的同时播放音乐,让播放的声音不显得单调,提高用户的听觉体验,并且在传输数据时,同一音节内包含多种频率,增加了每一个音节的可编码信息,提高了码率,采用交插的方式分散连续错误,提高纠错抗干扰能力,具有两种检错方式和两种纠错方式混合使用,提高纠错抗干扰能力,同时播放音乐不会干扰声波传输,提高解码成功率。

本发明的实施例公开了:

A1、一种在声波传输数据时播放音乐的方法,其中:

将传输数据转换到对应的声波频率上生成音频信息,并将所述音频信息填充到多声道的一个或多个声道中;

读取曲谱文件,基于所述曲谱文件生成音乐信号,并将所述音乐信号填充到多声道中未填充音频信息的一个或多个声道中;

在播放所述音频信息时播放所述音乐信号。

A2、如权利要求A1所述的方法,其特征在于:

将所述音频信息和所述音乐信号填充到不同的声道进行播放。

A3、如权利要求A1或A2所述的方法,其特征在于,所述基于所述曲谱文件生成音乐信号包括:

解析所述曲谱文件,获取音符简谱数字、音调符号、节拍符号,并计算每个音符的持续的时间;

将每个音符简谱数字和与此音符简谱数字相对应的音调符号、节拍符号组成合成音信息;

设置曲谱音频表,从所述曲谱音频表中获取与音符简谱数字和音调符号对应的音调频率;

生成合成音信息的音调频率信号S1为:

S1=0.8*sin(2.0*M_PI*f*j*T);0=<j<pitchTime;

其中,f为音调频率,ptichTime为节拍时间,M_PI为π。

A4、如权利要求A1或A2所述的方法,其特征在于,所述将传输数据转换到对应的声波频率上生成音频信息包括:

计算所述传输数据的检错码和纠错码,并将所述检错码和纠错码添加到所述传输数据中;

将所述传输数据转换到对应的声波频率上,生成连续的音频信息;

其中,所述音频信息的每个音节包含1个或多个频率信号。

A5、如权利要求A4所述的方法,其特征在于,所述计算传输数据的检错码和纠错码、并将所述检错码和纠错码添加到所述传输数据中包括:

生成传输数据数组,将数据头数据添加到所述传输数据数组中;

计算版本号和传输数据长度的检验码和纠错码,版本号数字、传输数据长度、版本号和传输数据长度的检验码和纠错码组成版本数据,将所述版本数据添加到所述传输数据数组中;

将待传输数据进行分段处理,形成长度相同的多段子数据,并为每段子数据生成检错码和纠错码,将每段子数据、每段子数据的检错码和纠错码组成分段数据,将所述分段数据添加到所述传输数据数组中;

对多个所述分段数据进行交叉处理。

A6、如权利要求A5所述的方法,其特征在于:所述版本号数字、传输数据长度、版本号和传输数据长度的检验码和纠错码组成版本数据包括:

版本号为16进制数D0、传输数据长度为2个16进制数D1、D2;版本号和传输数据长度的检验码为D3;

如果D1不等于0并且D2不等于0,则D3=(D1*D2+D0)%16;否则,D3=(D1+D2+D0)%16;

对版本号、传输数据长度、版本号和传输数据长度的检验码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

A7、如权利要求A5所述的方法,其特征在于,为每段子数据生成检错码和纠错码,将每段子数据、每段子数据的检错码和纠错码组成分段数据包括:

将每段子数据中的各个数乘以预设的加权系数并求和,然后除以8生成商跟余数,然后将商跟余数的和除以8求模,生成每段子数据的检错码;

对每段子数据、每段子数据的检错码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

A8、如权利要求A7所述的方法,其特征在于,所述对多个所述分段数据进行交叉处理包括:

从所述传输数据数组中获取所述多个所述分段数据;

将每个所述分段数据按行填充到矩阵中,并从此矩阵中按列依次提取多组数据,形成转换数据;

将所述转换数据替换所述分段数据添加到所述传输数据数组中。

A9、如权利要求A7所述的方法,其特征在于:

当接收到所述音频信息时,根据所述音频信息中增加的时间窗同步对齐,解析出频率信号并对所述频率信号进行解码,依次解析出数据头数据、版本数据和待传输数据。

B10、一种在声波传输数据时播放音乐的装置,其特征在于,包括:

数据音频生成单元,用于将传输数据转换到对应的声波频率上生成音频信息,并将所述音频信息填充到多声道的一个或多个声道中;

曲谱音频生成单元,用于读取曲谱文件,基于所述曲谱文件生成音乐信号,并将所述音乐信号填充到多声道中未填充音频信息的一个或多个声道中;

音频播放单元,用于在播放所述音频信息时播放所述音乐信号。

B11、如权利要求B10所述的装置,其特征在于:

所述曲谱音频生成单元,包括:

解析子模块,用于解析所述曲谱文件,获取音符简谱数字、音调符号、节拍符号,并计算每个音符的持续的时间;将每个音符简谱数字和与此音符简谱数字相对应的音调符号、节拍符号组成合成音信息;

音频子模块,用于设置曲谱音频表,从所述曲谱音频表中获取与音符简谱数字和音调符号对应的音调频率;

信号子模块,用于生成合成音信息的音调频率信号S1:

S1=0.8*sin(2.0*M_PI*f*j*T)*w[j];0=<j<pitchTime;

其中,f为音调频率,ptichTime为节拍时间,M_PI为π。

B12、如权利要求B11所述的装置,其特征在于:

所述数据音频生成单元,还用于计算所述传输数据的检错码和纠错码,并将所述检错码和纠错码添加到所述传输数据中;将所述传输数据转换到对应的声波频率上,生成连续的音频信息;

其中,所述音频信息的每个音节包含1个或多个频率信号

B13、如权利要求B12所述的装置,其特征在于:

所述数据音频生成单元,包括:

数组生成子模块,用于生成传输数据数组;

头数据编码子模块,用于将数据头数据添加到所述传输数据数组中;

版本数据编码子模块,用于计算版本号和传输数据长度的检验码和纠错码,版本号数字、传输数据长度、版本号和传输数据长度的检验码和纠错码组成版本数据,将所述版本数据添加到所述传输数据数组中;

传输数据编码子模块,用于将待传输数据进行分段处理,形成长度相同的多段子数据,并为每段子数据生成检错码和纠错码,将每段子数据、每段子数据的检错码和纠错码组成分段数据,将所述分段数据添加到所述传输数据数组中;对多个所述分段数据进行交叉处理。

B14、如权利要求B13所述的装置,其特征在于:

版本号为16进制数D0、传输数据长度为2个16进制数D1、D2;版本号和传输数据长度的检验码为D3;

所述版本数据编码子模块,用于如果D1不等于0并且D2不等于0,则计算D3=(D1*D2+D0)%16;否则,计算D3=(D1+D2+D0)%16;对版本号、传输数据长度、版本号和传输数据长度的检验码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

B15、如权利要求B13或B14所述的装置,其特征在于:

所述传输数据编码子模块,还用于将每段子数据中的各个数乘以预设的加权系数并求和,然后除以8生成商跟余数,然后将商跟余数的和除以8求模,生成每段子数据的检错码;对每段子数据、每段子数据的检错码组成的数字串进行RS编码运算,生成包括纠错码的RS码。

B16、如权利要求B15所述的装置,其特征在于:

所述传输数据编码子模块,还用于从所述传输数据数组中获取所述多个所述分段数据;将每个所述分段数据按行填充到矩阵中,并从此矩阵中按列依次提取多组数据,形成转换数据;将所述转换数据替换所述分段数据添加到所述传输数据数组中。

可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。

本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1