专利名称:声音缓冲器管理的制作方法
本发明涉及一个用于提供声音缓冲器管理的系统。本发明尤其涉及一个实时缓冲声音信息的系统,其中,缓冲的声音信息的生成者和使用者利用不同大小的记录的声音信息。
在当今的信息处理场合,越来越多的要求提供声音输入和输出。向一个信息处理系统输入声音的能力扩充了这种处理系统的实用性。例如,它使得用户仅靠对着电话讲话即能远程输入数据。使用电话键板的复杂编码方案被淘汰了。此外,由于对可用键板编码的数据量没有限制,因此可输入到系统的数据量大大增加。声音输入的另一优越性是,用户只要具有一架带有键盘的小装置,即可很容易地将数据输入系统,而不需花过多的时间学习利用键控穿孔输入数据。
一种为信息处理系统提供声音能力的方法是使用一个除主处理器之外的信号处理器,以控制数据的输入和输出以及系统中的数据处理。模拟声频信息被输入,转换为数字,并得到控制,且在信号控制器的控制下全部压缩。问题在于怎样缓冲正在输入系统的数字化声音信息。系统中产生了这样的问题,即该系统中的信号处理器有相当少的缓冲存贮器,需要频繁地向主系统传输小的数据模块,而主系统具有大量存贮器,并需不太频繁地向存贮媒介传输大的数据模块,以使之与该媒介的性能特征相匹配。因此必须提供一种装置,用于缓冲从输入到磁盘文件的声音信息。这种缓冲必须在实时的基础上完成,以便正在系统上运行的应用程序可以将缓冲的声音数据存贮在磁盘上,当用户讲话时,可允许他连续讲而不限制可输入系统的声音数据量。一次只能接收一完整声音信息的缓冲器提供了一种模拟方法将声音数据输入系统。更为有用的是这种声音缓冲方法应该能够接收在输入时没有限制其预定长度的声音数据。
为了给磁盘存贮媒介提供这种实时缓冲能力,缓冲装置必须有足够的灵活性,以使应用程序可以配置传输到磁盘的模块的大小。此时,缓冲装置必须能够为应用程序提供连续反馈,使其得知前面的传输是否跟得上语言数据的实时生成。
美国专利申请号4,193,123公布了一个以数字字表示语言段的先进先出缓冲器。数字字以第一速率输入缓冲器,并以稍慢些的第二速率从缓冲器中续出,然后施加于一个D/A转换器。在第一位被写进缓冲器之后的一个预定时间周期之前,没有表示语言的位从缓冲器中被读出。当缓冲器空了和满了的时候会产生故障信号。但其没有公布以实时缓冲声音数据的概念。
美国专利号3727204公布了一个异步缓冲设备,其中的缓冲器包括一个信息移位寄存器和一个薄记寄存器。这种缓冲方法适合于移位寄存器和薄记寄存器相互之间的信息移位速率,即,该方法迫使两个寄存器成为同步关系。但它不能够使两个寄存器以各自的速率运转,亦不能适应进入缓冲器的数据流量。
美国专利号3166715描述了一个异步移位寄存器,它以多种记录密度和记录媒介的多种速率进行操作。但其没有公布以不同速率操作的缓冲的数据使用者和生产者的概念。
因此,需要有一个声音缓冲器管理系统,以处理使用缓冲器的资源以不同的速率运转,并有不同大小的记录要求的情况。这种要求的产生是由于在信号处理场合下,是在不可预料的时间产生和使用声音信息,并将其存贮在多种存贮媒介上。结果,难于对缓冲器空间的争用和排队等候进行管理。
因此,本发明的目的是提供一个改进了的缓冲技术。
本发明的另一目的是提供一个实时缓冲声音信息的系统。
本发明的进一步目的是在信号处理系统中提供缓冲器管理,在该系统中,缓冲数据的生成者和使用者可以不同速率和不同大小的记录进行操作。
根据本发明的这些和另一些目的提供的一个声音缓冲器管理系统,其中,具有数字化声音信号的固定长记录以高速率周期地输入一个缓冲器,而具有多个输入记录的数字化声音以很低的速率调动。数字化声音数据的生成者是一个信号处理系统,它将输入模拟声频信号转换为压缩的数字化信号。缓冲的数字化声音数据的使用者是应用程序,它从缓冲器中调动多个数据记录的模块,传输到其它一些媒介中。在这里公布的最佳实施例中,缓冲器是环形缓冲器,它由N个记录组成,其中每M个记录形成缓冲器的一个模块。因此,缓冲器有N/M个模块。有两个指针用于控制缓冲器的操作;生成者指针指向欲被写入的模块中的下一个记录,同时使用者指针指向欲被读出的缓冲器中的下一个模块。
信号处理系统提供了一些用于控制声音数据的记录和存贮的功能。当声音记录开始时,信号处理系统便从起始处开始将语言数据记录装入缓冲器。对缓冲器将连续装入直至达到该缓冲器的终点,如果缓冲器的在该起始处的模块是有效的,则在这一点它将再次从头开始。在装入语言缓冲器的这一循环处理期间,软件应用使用了所提供的功能之一,以获得语言记录最早的完整模块的未处理过的地址。然后,软件应用便利用这一地址在它希望存贮记录的地方写入语言数据模块。这一功能也可用于其它两个目的,第一,它给信号处理系统提供一个指示,表明前面的模块现在有空接收更多的语言数据记录;第二,它将已装满的模块数返回。应用程序可利用这个数作为一个标记,以得知它是否跟得上实时数据速率。当缓冲器中没有空间存贮从信号处理系统传送来的下一个记录时,应用程序将接收到中断处理。这一记录,以及全部随后的记录将被放弃,直至应用程序将老数据移出缓冲器。这些被放弃的记录可以引起中断播放语言。
此处公布的缓冲方法也可反向使用(声频放音)。在这个反向模式中,由应用程序控制将存贮的语言数据记录装入缓冲器。当放音开始时,为了将数字化声音数据供给信号处理器,信号处理系统开始使用缓冲器始端的记录。信号处理系统将继续使用缓冲器的记录直至它的末端,在该点,它将从始端重新开始,直到缓冲器始端的模块包含有新的声频记录为止。在语言缓冲器放音的处理期间,应用程序利用所提供的另一功能获得语言记录最早模块的已被放音的地址。应用程序利用这个地址将下一组记录从记录文件中读入缓冲器。与记录的方法相似,也可以利用这一功能为信号处理系统提供一指示,表明前面的模块现在已装满新数据。它也返回空模块数。应用程序可以用该数作为一标记,以表示以足够快的速率提供的数据是否符合实时要求。如果缓冲器空了,则应用程序被中断,信号处理系统则形成静止状态,直至应用程序向缓冲器提供了更多的语言记录。
图1是本发明的以记录模式的声音缓冲器系统的功能块图。
图2是本发明的以放音模式的声音缓冲器系统的功能块图。
图3是描绘信息从信号处理系统到主系统的传输流程图。
图4是描绘信息从主系统到一个软件应用程序控制下的文件的传输流程图。
图5是本发明的整个系统的简化功能块图。
图6是一个简化块图,它描述了命令流从应用程序越过程序设计接口,通过主处理系统到达信号处理系统的过程。
图7是一简化块图,描述从信号处理系统发出的中断流通过主处理系统返回应用程序的过程。
如图1所示,数字化声音取样通过线34输入信号处理系统50中的记录缓冲器15。记录缓冲器15是一个往复转换类型的缓冲器,它包括独立的缓冲器17和18。当其中一个缓冲器空时,数字化声音取样通过线34直接进入缓冲器17或缓冲器18。如图1所示,缓冲器17是空的,而缓冲器18是装满的。数字化声音取样实质上是一无尽射流,它表示一个基本连续的可理解的语言信息。这一射流将继续,直至语言被输入系统50。对于可输入系统50的语言数据量没有预定限制。
如标线19所示,数字化声音取样从记录缓冲器15通过硬件接口44传输到主系统12中的缓冲器20。缓冲器20具有8个记录,其中前两个记录是记录22和记录25。记录22和记录25一起组成模块26。一般情况下,信号处理系统50允许应用程序10指定缓冲器20中有多少个记录和一个模块中有多少个记录。在此公布的最佳实施例中,缓冲器20中的两个记录形成一个模块。指针23根据箭头19引导数字化声音从记录缓冲器15传输到缓冲器20的下一个有效记录中。在本例中,指针23表示模块26的记录22是下一个将被输入数据的有效记录。缓冲器20是一个环形缓冲器,以该页纸为准从左至右横向装入。记录缓冲器15一次向缓冲器20传输一个记录。因此,为了装入一个模块,它得进行两次记录传输,例如缓冲器20中的模块26。
如图1所示,模块27装入了数字化声音数据。箭头29表示从模块27通过应用程序设计接口11的信息传输。所有通过应用程序设计接口11的传输都是在一个模块接一个模块的基础上进行的。指针28用于指示下一个将通过接口11传输的模块的起始处。通过程序设计接口11的信息传输是在软件应用程序10的控制之下(参看图5)在利用程序设计接口11的主系统12上运行的。应用程序10,应用程序设计接口11,主系统12,以及信号处理系统50之间的相互配合将在后面的图5-7中作更详细的解释。
图2中表示了反向处理,即声频放音。在这种情况下,一数据模块沿箭头31通过接口11进行传输。所有通过接口11的传输又一次在一个模块接一个模块的基础上进行。指针23指示出缓冲器20中通过接口11输入信息的下一个模块。在本例中,信息输入到模块27。依次,指针28指向将通过硬件接口44从主系统12的缓冲器20传输到记录缓冲器15的下一个记录。箭头32指明了这一传输。在本例中,由于缓冲器17已被装满,记录33被传输到记录缓冲器15的缓冲器18中。然后,声音信息通过线34输出。
图3中的流程图描述了从记录缓冲器15到缓冲器20的信息传输。在图3中,缓冲器20被称为应用程序接口(API)缓冲器,即这两项可以互换。这里强调的是API缓冲器或缓冲器20驻存于主系统12中。判断框81,确定API缓冲器是否已满。如果缓冲器20已满,则将没有数据从记录缓冲器15通过硬件接口44传输。可是,如果API缓冲器未满,即,如果至少有一个记录的空间,则缓冲器17或缓冲器18的内容将传输到API缓冲器。第82,83和84步描绘了缓冲器17或18的信息传输。在沿箭头19传输之后,指针23根据第85步增加一个记录。在本例中,指针23将增加以指向再在装入的记录22和将被装入的下一个记录25。最后,如第86步所示,API缓冲器20中的记录数的记数增加1。在图4中将更清楚地说明增加或保存记录记数的理由。
图4中的流程图说明了从API缓冲器20通过接口11的信息传输。第87步确定在缓冲器20中是否有一个装满的模块处于有效状态,可通过接口11进行传输。首先,它根据记录的记数是大于或等于模块记数来判定,其中模块记数等于每个模块的记录数。在此公布的最佳实施例中,每个模块的记录数等于2。然后,只有当记录记数至少为2时,表示缓冲器20的一个模块是装满的,模块才通过接口11传输出缓冲器20。如图4所示,如果记录记数不是大于或等于模块记数,则没有通过接口11的传输。可是,如果记录记数等于或超过了模块记数,则进行第88步的传输,指针28增加2(这是模块记数,即每个模块两个记录),从而指向将通过接口11传输出缓冲器20的下一个模块。在本例中,指针28将立即指向模块27右边的那个模块。此外,如第89步所示,记录记数被减去模块记数或2。这是由于每个模块带两个记录通过接口11传输出缓冲器20。例如,如果有四个记录,而在传输之前有两个模块被装入缓冲器20中,则在另一个从记录缓冲器15传输之前,只有两个记录继续留在缓冲器20中。
图5是一简化的功能块图,其命令流从应用程序10发出,传至信号处理系统50,而从信号处理系统50发出的中断流则传至应用程序10。应用程序10通过程序设计接口11与主系统12中的驱动器41,执行代码42和硬件中断发送程序43发生联系。硬件接口44形成了主处理系统12和信号处理系统50之间的界线。应用命令在指令存贮器21的区域24结束,而中断从区域24起源。区域24包括信号处理器控制程序。该控制程序在区域12,13和14管理指令存贮器21,并允许信号处理代码同时在区域12,13和14运行,从而共享信号处理系统50的资源。确定程序设计接口11的命令和中断流将在图6和图7中作详细描述。
图6详述了命令流从应用程序10发出,通过接口11与主系统12,并传至信号处理系统50的过程。从应用程序10输入到接口11的命令具有两种类型的标识。第一类标识是功能集,该标识选择适当的控制模块51,该模块依次访问执行代码42。第二类标识具有所给出的功能集中的特定命令。驱动器41取得这些命令,然后将它们传送到执行代码42中的适当位置上。作为命令的一部分,选择控制模块信息输入到接口11,而驱动器41则标识一个特定控制模块51。该控制模块51包括一个指针模块71,该指针模块指向命令矢量模块52的起始端。命令中的命令代码信息通过线72输出。命令代码与指针模块71中的指针信息一起指向或引导命令矢量52中与这条命令相关的特定位置。执行之后,命令矢量52指向命令处理器53中的一条特定执行代码。找到这条所需特定代码之后,驱动器51将控制转移到具有这条所需代码的命令处理器53。实际上,命令矢量52与通过线72发布的命令代码一起,和指针模块71执行了一个寻址功能。然后,命令处理器53执行一条已从应用程序10发出到信号处理系统50的特殊命令。
图7更加详细地描绘了从信号处理系统50返回的中断流通过主系统12到达接口11,然后到达应用程序10中的中断程序61的流程图。由信号处理系统50产生中断并通过硬件接口44经由线73输出到硬件中断发送程序43。该中断包括区域信息和中断类型信息。区域信息用于标识控制模块66,其中包括一个指向中断矢量67的起始点的指针72。中断类型经由线75输入。中断矢量模块67中的校正点与指针72一起被访问。访问完成之后,中断矢量67指向中断处理程序68中的入口点。然后,硬件中断发送程序43将中断发送到中断处理程序68。中断处理程序68运行,并通过应用中断矢量64将中断转移到应用中断程序61。通过线63提供给应用中断程序61的信息包括中断正在到来的信息,并将控制交予应用程序10,以处理该中断。控制交予应用程序10之后,从应用程序10输出一条读状态命令。然后,读状态信息通过线62从中断状态模块65输入到应用中断程序61。这一信号提供了更多的与刚刚发出的中断有关的信息,并且通知应用中断程序61自从前一条读状态命令以来已经发生的全部中断。当硬件中断发送程序43每次访问中断处理程序68时,该中断处理程序68都将中断状态模块65更新一次。
一个功能集,例如记录或放音功能集,包括两个软件文件。一个文件用于主处理系统12,而另一个文件用于信号处理系统50。当功能集被激活时,这两个文件即被装入主处理系统12的存贮器(未示出),然后,信号处理代码被装入指令存贮器21。这一装入是由基区14基本上以存贮器到存贮器移动的方式来完成的。可以在其它区域之一,12或13,正在运行的时候进行该装入。
在操作时,当希望将数字化声音输入缓冲器20时,应用程序10发出一条BUFFINIT命令,它指定主系统12中将被输入语言数据的缓冲器。BUFFINIT命令的目的是将缓冲器20引至RECORD功能集,使得在缓冲器20中能够缓冲声音数据。这时,即建立了一个新的空缓冲器。随后,由应用程序10发出一条START命令,开始将语言数据输入缓冲器20,如果这是在BUFFINIT命令之后第一次发布START命令,则RECORD功能集假设缓冲器20是空的,并开始将声音数据记录入缓冲器的起始端,即录入记录22。利用STOP命令停止对缓冲器20的声音数据输入。在装入缓冲器20的处理期间,应用程序10利用LISTEN命令得到声音记录最早的未被处理的完整模式的地址,即通过接口11传输的记录。该地址与完整模块数一起被返回(这些模块从该地址处有效)。在声音信息通过接口11传输之后,应用程序10利用上述该信息在其希望存贮该声音信息的地方写入模块。由应用程序10发出的下一次LISTEN命令为RECORD功能集提供了指示,即该模块目前有空闲接收更多的声音数据。
应用程序10也可以利用由LISTEN命令返回的完整模块数作为一指示,表明其是否跟得上声音数据的生成,即,声音数据正在被缓冲,并没有丢失。如果缓冲器20满了,而仍然从记录缓冲器15接收数据,则会出现SPEECH LOST中断情况,并且超出的声音数据记录被废弃,直至下一条LISTEN命令释放缓冲器20中的空间。这种情况将引起记录中断。第二种中断情况是RECORD情况。RECORD情况在每个被处理记录的起始端产生。最后一种中断情况是SILENCE情况,它在进行记录操作超过了预定的静止周期时发生。如果发生这种情况,则发布一条STOP命令,记录便停止。用于RECORD功能集的最后一条命令是DATAEND命令,用于排空缓冲器15中的任何剩余数据,并在STOP命令中止了RECORD功能集之后,完成正在录入缓冲器20的最后一个模块。
在图2所示的放音功能中,BUFFINIT命令用于将缓冲器20引导至PLAYBACK功能集。用这条命令可提供一个缓冲器,语言数据通过该缓冲器经由接口11传输到主系统12中选择的缓冲器中。在BUFFINIT命令发出的时候,如果当时建立了一个缓冲器并正在主系统12中运行,它将与在接口11下的其它任何缓冲器的声音数据一起被放弃。然后,利用START命令开始将声音数据通过接口11传入缓冲器20,再传输到信号处理系统50中的记录缓冲器15。STOP命令用于终止声音数据从缓冲器20经由硬件接口44到记录缓冲器15的传输。
在声音数据经接口11传输到缓冲器20并经接口44传输到记录缓冲器15的循环处理期间,应用程序10利用SPEAK命令得到已经放过音的声音记录的最早完整模块的地址。该模块的地址与在该点处有效的空模块数一起返回。随后,应用程序10利用这一地址将下一个记录集读入缓冲器20,并利用下一次SPEAK命令指示模块现已装满新记录并可放音的放音功能集。应用程序10可以用SPEAK命令返回的空模块数作为一标志,表明其是否跟得上放音速率。如果缓冲器20变空并放音,即语言数据到记录缓冲器15的传输还没有停止,则产生SPEECH LOSS的中断情况。这将在放音中引起中断。RECORD PROCESS的中断情况在每个被处理记录的起始处产生。该中断将指针28增值。在放音功能集中使用的START和STOP命令与在RECORD功能集中差不多相同,除非声音数据在相反方向流动。
虽然已参照最佳实施例对本发明进行了展示和说明,但是,本发明技术领域:
中的熟练技术人员仍可在本发明的范围和精神之内作一些改变。
权利要求
1.一声音缓冲系统,包括用于接收实际无尽的声音数据流的装置,该数据流代表基本连续,可被理解的语言信息;用于存贮所接收的实际无尽的声音数据流的装置;所述系统的特征在于用于实时输出所有存贮的实际无尽的声音数据流的装置,其中,所述基本连续,可理解的语言信息保持完整。
2.根据权利要求
1的声音缓冲系统进一步包括一控制装置,用于将所述实际无尽的声音数据流传入和传出存贮装置。
3.根据权利要求
2的声音缓冲系统,其中,所述的控制装置包括在软件应用程序控制下运行的多种命令和中断。
4.根据权利要求
3的声音缓冲系统,其中,所述的存贮装置包括一个缓冲器,它具有多个记录和多个由m个记录形成的模块。
5.根据权利要求
4的声音缓冲系统,其中,所述的多种命令和中断包括用于激活所述缓冲器,并起始和终止声音数据输入所述缓冲器的第一集,所述第一集一次能够向所述缓冲器输入一个记录。
6.根据权利要求
4的声音缓冲系统,其中,所述多种命令和中断包括命令和中断的第二集,用于将声音数据通过一程序设计接口传出所述缓冲器,以供所述软件应用程序使用,所述第二集一次传输一个声音数据模块。
7.根据权利要求
5的声音缓冲装置进一步包括一个指针,用于指示声音数据将传输到所述缓冲器中的下一个记录。
8.根据权利要求
6的声音缓冲系统进一步包括一个指针,用于指向通过所述程序设计接口传输出所述缓冲器的下一个声音数据的模块。
专利摘要
在信号处理场合,对一个缓冲器实时存入和读出声音数据。由于声音信息正被存入或从缓冲器中读出,所以其中存入的信息的长短和速率亦不同。小量数字化声音数据以很高速率输入缓冲器,而大量数据以较慢速率从缓冲器中输出,并可被存入永久性存贮器。该数字化声音数据的缓冲利用一环形缓冲器,并以实时形式实现。数据对缓冲器的输入和输出是在一主处理系统上运行的软件应用程序的控制之下进行的。
文档编号G10L13/00GK86106497SQ86106497
公开日1987年6月10日 申请日期1986年9月29日
发明者舒安·恩格海·普哈姆, 约翰·海登·威尔森 申请人:国际商用机器公司导出引文BiBTeX, EndNote, RefMan