-
Technisches Gebiet
-
Die vorliegende Erfindung betrifft eine Audiocodierungs- und -decodierungstechnik, und insbesondere ein Verfahren und ein System zur Audiocodierung und -decodierung der Spektrumsrekonstruktion uncodierten Teilbändern, und ein Verfahren zur Schätzung eines Rauschpegels.
-
Stand der Technik
-
Die Audiocodierungstechnik ist das Kernstück der Multimediaanwendungstechniken wie digitaler Audiorundfunk, im Internet verbreitete Musik und Audiokornmunikation usw., und diese Anwendungen werden aus der Verbesserung der Kompressionsleistung des Audiocodierers einen großen Nutzen ziehen. Der perzeptuelle Audiocodierer wirkt als ein verlustbehafteter Transformationsbereichscodierer und ist ein moderner, etablierter Audiocodierer. Allgemein können während der Audiocodierung aufgrund der Beschränkung der Codierungsbitrate Teile der Frequenzbereichskoeffizienten oder Frequenzkomponenten nicht codiert werden, und zur besseren Wiederherstellung der Spektralkomponenten uncodierter Teilbänder wenden aktuelle Audiocodierer und -decodierer allgemein ein Verfahren zur Rauschfüllung oder Spektralbandreplikation an, um die Spektralkomponenten des uncodierten Teilbands zu rekonstruieren. G722.1C wendet das Verfahren zur Rauschfüllung an, HE-AAC-V1 wendet die Spektralbandreplikationstechnik an, und G.719 wendet das Verfahren der Kombination von Rauschfüllung und einfacher Spektralbandreplikation an. Die Anwendung des Verfahrens zur Rauschfüllung ist nicht in der Lage, die Spektralhüllkurve des uncodierten Teilbands und die Ton- und Rauschkomponenten innerhalb des Teilbands gut wiederherzustellen. Das Verfahren zur Spektralbandreplikation von HE-AAC-V1 ist erforderlich, um das Spektrum des Audiosignals vor der Codierung zu analysieren, den Ton und das Rauschen der Hochfrequenzkomponentensignale zu schätzen, Parameter zu extrahieren und nach dem Downsampling des Audiosignals den AAC-Codierer zur Durchführung der Codierung zu verwenden, die einen hohen Rechenaufwand aufweist und um mehr Parameterinformation zum Decodierungsende senden muss, mehr codierte Bits belegt und zugleich auch die Codierungsverzögerung erhöht. Doch das Replikationssystem von 6.719 ist zu einfach, um die Spektralhüllkurve der uncodierten Teilbänder und die Ton- und Rauschkomponenten innerhalb des Teilbands gut wiederherstellen zu können.
-
Zusammenfassung der Erfindung
-
Das technische Problem, das bei der vorliegenden Erfindung zu lösen ist, ist die Bereitstellung eines Verfahrens und Systems zur Audiocodierung und -decodierung und eines Verfahrens zur Schätzung eines Rauschpegels, das die uncodierten Frequenzbereichskoeffizienten gut rekonstruieren kann.
-
Um das obige technische Problem zu lösen, stellt die vorliegende Erfindung ein Verfahren zur Schätzung eines Rauschpegels bereit, und dieses Verfahren umfasst:
das Schätzen eines Leistungsspektrums eines zu codierenden Audiosignals einem Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend; und
das Schätzen eines Rauschpegels eines Nullbit-Codierungsteilband-Audiosignals dem durch Berechnung erhaltenen Leistungsspektrum entsprechend, wobei dieser Rauschpegel verwendet wird, um beim Decodieren ein Energieverhältnis der Rauschfüllung zur Spektralbandreplikation zu regeln; wobei ein Nullbit-Codierungsteilband sich auf ein Codierungsteilband bezieht, dessen zugewiesene Bitzahl null ist.
-
Bevorzugt bezieht sich der Rauschpegel des Nullbit-Codierungsteilband-Audiosignals auf ein Verhältnis einer geschätzten Rauschkomponentenleistung im Nullbit-Codierungsteilband zu einer geschätzten Tonkomponentenleistung im Nullbit-Codierungsteilband.
-
Bevorzugt wird das Leistungsspektrum des zu codierenden Audiosignals einem MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend geschätzt, und ist eine Leistungsberechnungsformel eines Frequenzpunkts k des i-ten Frames wie folgt:
Pi(k) = λPi-1(k) + (1 – λ)Xi(k)2, wobei, wenn i gleich 0, 1 = 0; Pi(k) einen Leistungswert bezeichnet, der im k-ten Frequenzpunkt des i-ten Frames geschätzt wird, Xi(k) einen MDCT-Koeffizienten im k-ten Frequenzpunkt des i-ten Rahmens bezeichnet, und λ ein Filterungskoeffizient eines unipolaren Glättungsfilters ist.
-
Bevorzugt werden die Frequenzbereichskoeffizienten des zu codierenden Audiosignals in ein oder mehrere Rauschfüllteilbänder aufgeteilt, und ein Prozess, um den Rauschpegel eines bestimmten gültigen Rauschfüllteilbands dem geschätzten Leistungsspektrum des zu codierenden Audiosignals entsprechend zu berechnen, umfasst:
das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband, um eine Durchschnittsleistung P_aveg(j) zu erhalten;
das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten, deren Leistungen Pi(K) größer als die Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband sind, um eine Tonkomponenten-Durchschnittsleistung P_signal_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten;
das Berechnen eines Durchschnittswerts der Leistungen Pi(k) aller Frequenzbereichskoeffizienten, deren Leistungen Pi(k) kleiner oder gleich der Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband sind, um eine Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten;
das Berechnen eines Verhältnisses P_noise_rate(j) der Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) zur Tonkomponenten-Durchschnittsleistung P_signal_aveg(j), um den Rauschpegel dieses gültigen Rauschfüllteilbands zu erhalten.
-
Hierbei bezieht sich das gültige Rauschfüllteilband auf das Rauschfüllteilband mit Nullbit-Codierungsteilbändern.
-
Um das obige technische Problem zu lösen, stellt die vorliegende Erfindung auch ein Verfahren zur Audiocodierung bereit, und das Verfahren umfasst:
- A. das Aufteilen der MDCT-Frequenzbereichskoeffizienten eines zu codierenden Audiosignals in eine Vielzahl von Codierungsteilbändern und das Durchführen der Quantisierung und Codierung für Amplitudenhüllkurvenwerte jedes Codierungsteilbands, um amplitudenhüllkurvencodierte Bits zu erhalten;
- B. das Durchführen der Bitzuweisung für jedes Codierungsteilband und das Durchführen der Quantisierung und Codierung für Nicht-Nullbit-Codierungsteilbänder, um MDCT-frequenzbereichskoeffizientencodierte Bits zu erhalten;
- C. das Schätzen eines Leistungsspektrums des zu codierenden Audiosignals den MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend, und das Schätzen eines Rauschpegels eines Nullbit-Codierungsteilband-Audiosignals, und das Quantisieren und Codieren des Rauschpegels, um rauschpegelcodierte Bits zu erhalten; wobei dieser Rauschpegel verwendet wird, um beim Decodieren ein Energieverhältnis der Rauschfüllung zur Spektralbandreplikation zu regeln, und das Nullbit-Codierungsteilband sich auf ein Codierungsteilband bezieht, dessen zugewiesene Bitzahl null ist; und
- D. nach dem Multiplexen und Packen der amplitudenhüllkurvencodierten Bits jedes Codierungsteilbands und der frequenzbereichskoeffizientencodierten Bits und rauschpegelcodierten Bits, das Senden an ein Decodierungsende.
-
Bevorzugt bezieht sich in Schritt C der Rauschpegel des Nullbit-Codierungsteilband-Audiosignals auf ein Verhältnis einer geschätzten Rauschkomponentenleistung im Nullbit-Codierungsteilband zu einer geschätzten Tonkomponentenleistung im Nullbit-Codierungsteilband.
-
Bevorzugt wird das Leistungsspektrum des zu codierenden Audiosignals dem MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend geschätzt, und ist ein Leistungsschätzalgorithmus eines Frequenzpunkts k des i-ten Frames wie folgt:
Pi(k) = λPi-1(k) + (1 – λ)Xi(k)2, wobei, wenn i gleich 0, Pi-1(k) = 0; Pi(k) einen Leistungswert bezeichnet, der im k-ten Frequenzpunkt des i-ten Frames geschätzt wird, Xi(k) einen MDCT-Koeffizienten im k-ten Frequenzpunkt des i-ten Rahmens bezeichnet, und λ ein Filterungskoeffizient eines unipolaren Glättungsfilters ist.
-
Bevorzugt werden in Schritt B die Frequenzbereichskoeffizienten des zu codierenden Audiosignals in ein oder mehrere Rauschfüllteilbänder aufgeteilt, und nachdem jedem Codierungsteilband Bits zugewiesen wurden, werden gültigen Rauschfüllteilbändern Bits zugewiesen; in Schritt C umfasst ein Prozess, um den Rauschpegel eines bestimmten gültigen Rauschfüllteilbands dem geschätzten Leistungsspektrum des zu codierenden Audiosignals entsprechend zu berechnen:
das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffzienten aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband, um eine Durchschnittsleistung P_aveg(j) zu erhalten;
das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten, deren Leistungen Pi(K) größer als die Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband sind, um eine Tonkomponenten-Durchschnittsleistung P_signal_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten;
das Berechnen eines Durchschnittswerts der Leistungen Pi(k) aller Frequenzbereichskoeffizienten, deren Leistungen Pi(k) kleiner oder gleich der Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband sind, um eine Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten;
das Berechnen eines Verhältnisses P_noise_rate(j) der Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) zur Tonkomponenten-Durchschnittsleistung P_signal_aveg(j), um den Rauschpegel dieses gültigen Rauschfüllteilbands zu erhalten.
-
Hierbei beziet sich das gültige Rauschfüllteilband auf das Rauschfüllteilband mit Nullbit-Codierungsteilbändern.
-
Bevorzugt wird bei der Aufteilung in Rauschfüllteilbänder eine einheitliche Aufteilung oder den menschlichen Höreigenschaften entsprechend eine uneinheitliche Aufteilung angewandt, und ein Rauschfüllteilband schließt ein oder mehrere Codierungsteilbänder ein.
-
Bevorzugt werden in Schritt B allen gültigen Rauschfüllteilbändern Bits zugewiesen, oder ein oder mehrere gültige Rauschfüllteilbänder mit niedriger Frequenz werden übersprungen und nachfolgenden gültigen Rauschfüllteilbändern mit höherer Frequenz werden Bits zugewiesen; wird in Schritt C der Rauschpegel der gültigen Rauschfüllteilbänder berechnet, welchen Bits zugewiesen werden; und werden in Schritt D diese zugewiesenen Bits verwendet, um die rauschpegelcodierten Bits zu multiplexen und zu packen.
-
Bevorzugt wird jedem gültigen Rauschfüllteilband die gleiche Bitzahl zugewiesen, oder den Höreigenschaften entsprechend werden verschiedene Bitzahlen zugewiesen.
-
Um das obige technische Problem zu lösen, stellt die vorliegende Erfindung auch ein Verfahren zur Audiodecodierung bereit, und das Verfahren umfasst:
- A2. das Durchführen der Decodierung und Inversquantisierung für jedes amplitudenhüllkurvencodierte Bit in einem zu decodierenden Bitstrom, um eine Amplitudenhüllkurve jedes Codierungsteilbands zu erhalten;
- B2. das Durchführen der Bitzuweisung für jedes Codierungsteilband, das Durchführen der Decodierung und Inversquantisierung für rauschpegelcodierte Bits, um einen Rauschpegel eines Nullbit-Codierungsteilbands zu erhalten, und das Durchführen der Decodierung und Inversquantisierung für frequenzbereichskoeffizientencodierte Bits, um Frequenzbereichskoeffizienten eines Nicht-Nullbit-Codierungsteilbands zu erhalten;
- C2. das Durchführen der Spektralbandreplikation für Nullbit-Codierungsteilbänder, und der Amplitudenhüllkurve jedes Nullbit-Codierungsteilbands entsprechend, das Regeln eines Gesamtenergiefüllpegels dieses Codierungsteilbands, und dem Rauschpegel dieses Nullbit-Codierungsteilbands entsprechend, das Regeln eines Energieverhältnisses der Rauschfüllung zur Spektralbandreplikation, um rekonstruierte Frequenzbereichskoeffizienten von Nullbit-Codierungsteilbändern zu erhalten; und
- D2. das Durchführen der Inversen Modifizierten Diskreten Cosinus-Transformation (IMDCT) für Frequenzbereichskoeffizienten von Nicht-Nullbit-Codierungsteilbändern und rekonstruierte Frequenzbereichskoeffizienten von Nullbit-Codierungsteilbändern, um ein Endaudiosignal zu erhalten.
-
Bevorzugt wird in Schritt C2 während der Spektralbandreplikation eine bestimmten Tonposition des Audiosignals in MDCT-Frequenzbereichskoeffizienten gesucht, eine Bandbreite von einem Nullfrequenzpunkt zu einem Frequenzpunkt der Tonposition wird als Spektralbandreplikationsperiode genommen, und ein Frequenzsegment von einem Frequenzpunkt des Nullfrequenzpunkts, der copyband_offset-Frequenzpunkte rückwärts verschiebt, bis zu einem Frequenzpunkt des Frequenzpunkts der Tonposition, der copyband_offset-Frequenzpunkte rückwärts verschiebt, wird als Quellfrequenzsegment genommen, und die Spektralbandreplikation wird an einem Nullbit-Codierungsteilband durchgeführt, und wenn die höchste Frequenz innerhalb des Nullbit-Codierungsteilbands kleiner ist als die Frequenz des gesuchten Tons, wendet dieses Nullbit-Codierungsteilband zur Durchführung der Spektrumsrekonstruktion nur die Rauschfüllung an.
-
Bevorzugt wird in Schritt C2
ein Absolutwert oder ein Quadratwert der Frequenzbereichskoeffizienten eines ersten Frequenzsegments berechnet und glättungsgefiltert; und
einem Ergebnis der Glättungsfilterung entsprechend, eine maximale Extremwertposition der Filterungsausgaben des ersten Frequenzsegments gesucht, und dieser maximale Extremwert wird als die Tonposition genommen.
-
Bevorzugt ist eine Operationsformel des Nehmens des Absolutwerts der Frequenzbereichskoeffizienten des ersten Frequenzsegments zur Durchführung der Glättungsfilterung wie folgt: X_ampi(k) = μX_ampi-1(k) + (1 – μ)|X i(k)| oder eine Operationsformel des Nehmens des Quadratwerts der Frequenzbereichskoeffizienten des ersten Frequenzsegments zur Durchführung der Glättungsfilterung ist wie folgt: X_ampi(k) = μX_ampi-1(k – 1) + (1 – μ)X i(k)2 wobei μ ein Glättungsfilterungskoeffizient ist, X_ampi(k) Filterungsausgaben des k-ten Frequenzpunkts des i-ten Frames bezeichnet und X i(k) ein decodierter MDCT-Koeffizient des k-ten Frequenzpunkts des i-ten Frames ist, und wenn i = 0, X_ampi-1(k) = 0.
-
Bevorzugt ist das erste Frequenzsegment ein Frequenzsegment mit niedrigen Frequenzen, dessen Energie den spektralstatistischen Eigenschaften entsprechend stärker zentralisiert ist, wobei niedrige Frequenzen sich auf Spektralkomponenten beziehen, die weniger als die Hälfte einer Gesamtbandbreite eines Signals ausmachen.
-
Bevorzugt wird die folgende Methode angewandt, um den maximalen Extremwert der Filterungsausgaben zu bestimmen: das direkte Suchen nach einem anfänglichen Maximalwert in den Filterungsausgaben der Frequenzbereichskoeffizienten, die dem ersten Frequenzsegment entsprechen, und das Nehmen dieses Maximalwerts als den maximalen Extremwert der Filterungsausgaben des ersten Frequenzsegments.
-
Bevorzugt wird die folgende Methode angewandt, um den maximalen Extremwert der Filterungsausgaben zu bestimmen:
das Nehmen eines Segments im ersten Frequenzsegment als ein zweites Frequenzsegment und das Suchen nach einem anfänglichen Maximalwert in den Filterungsausgaben der Frequenzbereichskoeffizienten, die dem zweiten Frequenzsegment entsprechen, und je nach Position des Frequenzbereichskoeffizienten, der diesem anfänglichen Maximalwert entspricht, das Durchführen verschiedener Prozesse:
- a. wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten einer niedrigsten Frequenz des zweiten Frequenzsegments ist, das Vergleichen dieser Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des zweiten Frequenzsegments mit der Filterungsausgabe des Frequenzbereichskoeffizienten einer früheren niedrigeren Frequenz im ersten Frequenzsegment, und das Vergleichen fortlaufend vorwärts, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des früheren Frequenzbereichskoeffizienten, wobei die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten dann ein endgültig bestimmter maximaler Extremwert ist, oder das Vergleichen, bis die Filterungsausgabe des Frequenzbereichskoeffizienten einer niedrigsten Frequenz des ersten Frequenzsegments größer ist als die Filterungsausgabe des späteren Frequenzbereichskoeffizienten, wobei die Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des ersten Frequenzsegments dann der endgültig bestimmte maximale Extremwert ist;
- b. wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten einer höchsten Frequenz des zweiten Frequenzsegments ist, das Vergleichen dieser Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des zweiten Frequenzsegments mit der Filterungsausgabe des Frequenzbereichskoeffizienten einer späteren höheren Frequenz im ersten Frequenzsegment und das Vergleichen fortlaufend rückwärts, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des späteren Frequenzbereichskoeffizienten, wobei die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten dann der endgültig bestimmte maximale Extremwert ist, oder das Vergleichen, bis die Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des ersten Frequenzsegments größer ist als die Filterungsausgabe eines früheren Frequenzbereichskoeffizienten, wobei die Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des ersten Frequenzsegments dann der endgültig bestimmte maximale Extremwert ist;
- c. wenn dieser anfängliche Maximalwert die Filterungsausgabe eines Frequenzbereichskoeffizienten zwischen der niedrigsten Frequenz und der höchsten Frequenz im zweiten Frequenzsegment ist, ist der Frequenzbereichskoeffizient, der diesem anfänglichen Maximalwert entspricht, die Tonposition, das heißt, dieser anfängliche Maximalwert ist der endgültig bestimmte maximale Extremwert.
-
Bevorzugt wird in Schritt C2, wenn die Spektralbandreplikation für ein Nullbit-Codierungsteilband durchgeführt wird, dem Quellfrequenzsegment und einer Startsequenznummer des Nullbit-Codierungsteilbands, das der Spektralbandreplikation bedarf, entsprechend eine Quellfrequenzsegment-Replikationsstartsequenznummer dieses Nullbit-Codierungsteilbands berechnet, und dann wird die Spektralbandreplikationsperiode als Periode genommen, und die Frequenzbereichskoeffizienten des Quellfrequenzsegments werden von der Quellfrequenzsegnent-Replikationsstartsequenznummer an periodisch auf das Nullbit-Codierungsteilband repliziert.
-
Bevorzugt ist in Schritt C2 eine Methode zur Berechnung der Quellfrequenzsegment-Replikationsstartsequenznummer dieses Nullbit-Codierungsteilbands:
das Erhalten einer Sequenznummer eines Frequenzpunkts eines Start-MDCT-Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbands, dessen Frequenzbereichskoeffizienten zu rekonstruieren sind, welche als fillband_start_freq bezeichnet wird, wobei eine Sequenznummer eines Frequenzpunkts, der dem Ton entspricht, als Tonal_pos bezeichnet wird, Tonal_pos plus 1 eine Replikationsperiode copy_period ergibt und ein Spektralbandreplikationsversatz als copyband_offset bezeichnet wird, wobei der Wert von fillband_start_freq rekursiv von copy_period subtrahiert wird, bis dieser Wert in einem Wertebereich der Sequenznummern des Quellfrequenzsegments liegt, und dieser Wert dann die Quellfrequenzsegment-Replikationsstartsequenznummer ist, die als copy_pos_mod bezeichnet wird.
-
Bevorzugt ist in Schritt C2 ein Verfahren, um die Spektralbandreplikationsperiode als die Periode zu nehmen und die Frequenzbereichskoeffizienten des Quellfrequenzsegments von der Quellfrequenzsegment-Replikationstartsequenznummer an periodisch auf das Nullbit-Codierungsteilband zu replizieren:
das Replizieren der Frequenzbereichskoeffizienten von der Quellfrequenzsegment-Replikationsstartsequenznummer an rückwärts fortlaufend auf das Nullbit-Codierungsteilband beginnend mit fillband_start_freq, bis der Frequenzpunkt der Quellfrequenzsegmentreplikation einen Frequenzpunkt von Tonal_pos + copyband_offset erreicht, das kontinuierliche Weiterreplizieren der Frequenzbereichskoeffizienten vom copyband_offset-Frequenzpunkt an rückwärts auf das Nullbit-Codierungsteilband usw., bis die Spektralbandreplikation aller Frequenzbereichskoeffizienten des aktuellen Nullbit-Codierungsteilbands abgeschlossen ist.
-
Bevorzugt werden in Schritt C2 Frequenzbereichskoeffizienten, die nach der Replikation des Nullbit-Codierungsteilbands erhalten wurden, durch Anwendung des folgenden Verfahrens bezüglich der Energie angepasst:
das Berechnen einer Amplitudenhüllkurve von Frequenzbereichskoeffizienten, die nach der Spektralbandreplikation des Nullbit-Codierungsteilbands erhalten wurden, und die als sbr_rms(r) bezeichnet wird;
wobei eine Formel zur Durchführung der Energieanpassung an Frequenzbereichskoeffizienten, die nach der Replikation erhalten wurden, wie folgt ist:
X_sbr(r) = X_sbr(r)·sbr_lev_scaie(r)·rms(r)/sbr_rms(r); wobei
X_sbr (r) den Frequenzbereichskoeffizienten nach der Energieanpassung des Nullbit-Codierungsteilbands r bezeichnet, X_sbr(r) den Frequenzbereichskoeffizienten bezeichnet, der nach der Replikation des Nullbit-Codierungsteilbands r erhalten wurden, sbr_rms(r) die Amplitudenhüllkurve der Frequenzbereichskoeffizienten X_sbr(r) ist, die nach der Replikation des Nullbit-Codierungsteilbands r erhalten wurden, rms(r) die Amplitudenhüllkurve der Frequenzbereichskoeffizienten vor der Codierung des Nullbit-Codierungsteilbands r ist, die durch Inversquantisierung eines quantitativen Index der Amplitudenhüllkurve erhalten wird, sbr_lev_scale(r) ein Energie-Skalierfaktor der Spektralbandreplikation des Nullbit-Codierungsteilbands r ist, dessen Wert durch den Rauschpegel des Rauschfüllteilbands bestimmt wird, wo das Nullbit-Codierungsteilband r liegt, und eine spezifische Berechnungsformel wie folgt ist:
wobei fill_energy_saclefactor ein Füllenergie-Skalierungsfaktor zur Anpassung eines Gewinns der Gesamtfüllenergie ist, dessen Wertebereich (0, 1) ist, und
P_noise_rate (j) der Rauschpegel eines Rauschfüllteilbands j ist, der durch Decodieren und Inversquantisieren erhalten wird, wobei j die Sequenznummer des Rauschfüllteilbands ist, wo das Nullbit-Codierungsteilband r liegt.
-
Bevorzugt wird in Schritt C2 die Rauschfüllung für Frequenzbereichskoeffizienten nach der Energieanpassung der folgenden Formel entsprechend durchgeführt:
X(r) = X_sbr(r) + rms(r)·noise_lev_scale(r)·random(); wobei
X (r) einen rekonstruierten Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbands r bezeichnet,
X_sbr (r) einen Frequenzbereichskoeffizienten nach der Energieanpassung des Nullbit-Codierungsteilbands r bezeichnet, rms(r) die Amplitudenhüllkurve der Frequenzbereichskoeffizienten vor der Codierung des Nullbit-Codierungsteilbands r ist, die durch Inversquantisierung eines quantitativen Index der Amplitudenhüllkurve erhalten wird, random() ein Zufallsphasengenerator ist, der Zufallsphasenwerte generiert und +1 oder –1 zurückgibt, und noise_lev_scale(r) ein Rauschpegel-Skalierfaktor des Nullbit-Codierungsteilbands r ist, dessen Wert durch den Rauschpegel des Rauschfüllteilbands bestimmt wird, wo das Nullbit-Codierungsteilband r liegt, und eine spezifische Berechnungsformel wie folgt ist:
wobei fill_energy_saclefactor ein Füllenergie-Skalierungsfaktor zur Anpassung eines Gewinns der Gesamtfüllenergie ist, dessen Wertebereich (0, 1) ist, und
P_noise_rate (j) der Rauschpegel eines Rauschfüllteilbands j ist, der durch Decodieren und Inversquantisieren erhalten wird, wobei j die Sequenznummer des Rauschfüllteilbands ist, wo das Nullbit-Codierungsteilband r liegt.
-
Bevorzugt werden in Schritt B2 nach der Durchführung der Bitzuweisung für jedes Codierungsteilband die Codierungsteilbänder in eine Vielzahl von Rauschfüllteilbändern aufgeteilt, und die Bitzuweisung wird für gültige Rauschfüllteilbänder durchgeführt, und in Schritt C2 wird die Spektralbandreplikation für Nullbit-Codierungsteilbänder in den gültigen Rauschfüllteilbändern durchgeführt, welchen Bits zugewiesen wurden, und ein Energiepegel der replizierten Frequenzbereichskoeffizienten und ein Energiepegel der Rauschfüllung werden geregelt, und die Rauschfüllung wird für Nullbit-Codierungsteilbänder in einem gültigen Rauschfüllteilband durchgeführt, welchem keine Bits zugewiesen wurden, wobei das gültige Rauschfüllteilband sich auf ein Rauschfüllteilband mit dem Nullbit-Codierungsteilband bezieht.
-
Um das obige technische Problem zu lösen, stellt die vorliegende Erfindung auch ein System zur Audiocodierung bereit, und dieses System umfasst: eine Modifizierte Diskrete Cosinus-Transformation(MDCT)-Einheit, eine Amplitudenhüllkurven-Berechnungseinheit, eine Amplitudenhüllkurven-Quantisierungs- und Codiereinheit, eine Bitzuweisungseinheit, eine Frequenzbereichskoeffizienten-Codiereinheit und einen Bitstrom-Multiplexer (MUX), und dieses System umfasst auch eine Rauschpegel-Schätzeinheit, wobei:
die MDCT-Einheit vorgesehen ist, um die Inverse Modifizierte Diskrete Cosinus-Transformation an einem zu transformierenden Audiosignal durchzuführen und Frequenzbereichskoeffizienten zu erzeugen;
die Amplitudenhüllkurven-Berechnungseinheit, die mit der MDCT-Einheit verbunden ist, vorgesehen ist, um Frequenzbereichskoeffizienten, die durch die MDCT erzeugt wurden, in eine Vielzahl von Codierungsteilbändern aufzuteilen und Amplitudenhüllkurvenwerte jedes Codierungsteilbands zu berechnen;
die Amplitudenhüllkurven-Quantisierungs- und Codiereinheit, die mit der Amplitudenhüllkurven-Berechnungseinheit verbunden ist, vorgesehen ist, um die Quantisierung und Codierung an Amplitudenhüllkurvenwerten jedes Codierungsteilbands durchzuführen und codierte Bits der Amplitudenhüllkurve jedes Codierungsteilbands zu erzeugen;
die Bitzuweisungseinheit, die mit der Amplitudenhüllkurven-Quantisierungs- und Codiereinheit verbunden ist, vorgesehen ist, um jedem Codierungsteilband Bits zuzuweisen;
die Frequenzbereichskoeffizienten-Quantisierungs- und Codiereinheit, die mit der MDCT-Einheit, der Bitzuweisungseinheit und der Amplitudenhüllkurven-Quantisierungs- und Codiereinheit verbunden ist, vorgesehen ist, um Normalisierungs-, Quantisierungs- und Codierungsprozesse an allen Frequenzbereichskoeffizienten jedes Codierungsteilbands durchzuführen und frequenzbereichskoeffizientencodierte Bits zu erzeugen;
die Rauschpegel-Schätzeinheit, die mit der MDCT-Einheit und der Bitzuweisungseinheit verbunden ist, vorgesehen ist, um ein Leistungsspektrum des zu codierenden Audiosignals den MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend zu schätzen, und einen Rauschpegel eines Nullbit-Codierungsteilband-Audiosignals zu schätzen, zu quantisieren und zu codieren, um rauschpegelcodierte Bits zu erhalten; wobei dieser Rauschpegel benutzt wird, um beim Decodieren ein Energieverhältnis der Rauschfüllung zur Spektralbandreplikation zu regeln;
der Bitstrom-Multiplexer (MUX), der mit der Amplitudenhüllkurven-Berechnungseinheit, der Frequenzbereichskoeffizienten-Quantisierungs- und Codiereinheit und der Rauschpegel-Schätzeinheit verbunden ist, vorgesehen ist, um codierte Bits jedes Codierungsteilbands und codierte Bits von Frequenzbereichskoeffizienten zu multiplexen und an ein Decodierungsende zu senden.
-
Bevorzugt bezieht sich der Rauschpegel des Nullbit-Codierungsteilband-Audiosignals auf ein Verhältnis einer geschätzten Rauschkomponentenleistung im Nullbit-Codierungsteilband zu einer geschätzten Tonkomponentenleistung im Nullbit-Codierungsteilband.
-
Bevorzugt umfasst diese Rauschpegel-Schätzeinheit:
ein Leistungsspektrum-Schätzmodul, das vorgesehen ist, um das Leistungsspektrum des zu codierenden Audiosignals den MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend zu schätzen,
ein Rauschpegel-Berechnungsmodul, das mit dem Leistungsspektrum-Schätzmodul verbunden ist und vorgesehen ist, um den Rauschpegel des Nullbit-Codierungsteilband-Audiosignals dem vom Leistungsspektrum-Schätzmodul geschätzten Leistungsspektrum entsprechend zu schätzen; und
ein Rauschpegel-Codierungsmodul, das mit dem Rauschpegel-Berechnungsmodul verbunden ist und vorgesehen ist, um die Quantisierung und Codierung am Rauschpegel durchzuführen, der vom Rauschpegel-Berechnungsmodul berechnet wurde, um rauschpegelcodierte Bits zu erhalten.
-
Bevorzugt wendet das Leistungsspektrum-Schätzmodul die folgende Formel an, um eine Leistung eines Frequenzpunkts k des i-ten Frames zu schätzen:
Pi(k) = λPi-1(k) + (1 – λ)Xi(k)2 wobei, wenn i gleich 0, Pi-1(k) = 0; Pi(k) einen Leistungswert bezeichnet, der im k-ten Frequenzpunkt des i-ten Frames geschätzt wird; Xi(k) den MDCT-Koeffizienten im k-ten Frequenzpunkt des i-ten Rahmens bezeichnet, und λ ein Filterungskoeffizient eines unipolaren Glättungsfilters ist.
-
Bevorzugt werden die Frequenzbereichskoeffizienten des zu codierenden Audiosignals in ein oder mehrere Rauschfüllteilbänder aufgeteilt, und die Funktion des Rauschpegel-Berechnungsmoduls umfasst: das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten aller oder eines Teils der Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband, um eine Durchschnittsleistung P_aveg(j) zu erhalten; das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten aller oder eines Teils der Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband, deren Leistungen Pi(k) größer als die Durchschnittsleistung P_aveg(j) aller oder eines Teils der Null bit-Codierungsteilbänder im gültigen Rauschfüllteilband sind, um eine Tonkomponenten-Durchschnittsleistung P_signal_aveg(j) der Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband zu erhalten; das Berechnen eines Durchschnittswerts der Leistungen Pi(k) aller Frequenzbereichskoeffizienten, deren Leistungen Pi(k) kleiner oder gleich der Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband sind, um eine Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) der Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband zu erhalten; und das Berechnen eines Verhältnisses der Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) zur Tonkomponenten-Durchschnittsleistung P_signal_aveg(j), um den Rauschpegel des gültigen Rauschfüllteilbands zu erhalten,
wobei das gültige Rauschfüllteilband sich auf das Rauschfüllteilband mit Nullbit-Codierungsteilbändern bezieht.
-
Bevorzugt umfasst die Rauschpegel-Schätzeinheit auch ein Bitzuweisungsmodul, das mit dem Rauschpegel-Berechnungsmodul und dem Rauschpegel-Codierungsmodul verbunden ist, und das Bitzuweisungsmodul ist vorgesehen, um allen gültigen Rauschfüllteilbändern Bits zuzuweisen oder ein oder mehrere gültige Rauschfüllteilbänder mit niedrigen Frequenzen zu überspringen und nachfolgenden gültigen Rauschfüllteilbändern mit höheren Frequenzen Bits zuzuweisen und dies dem Rauschpegel-Berechnungsmodul und dem Rauschpegel-Codierungsmodul zu melden; das Rauschpegel-Berechnungsmodul berechnet den Rauschpegel nur für Rauschfüllteilbänder, denen Bits zugewiesen wurden; und das Rauschpegel-Codierungsmodul verwendet die Bits, die vom Bitzuweisungsmodul zugewiesen wurden, um die Quantisierung und Codierung an diesem Rauschpegel durchzuführen.
-
Um das obige technische Problem zu lösen, stellt die vorliegende Erfindung auch ein System zur Audiodecodierung bereit, und das System umfasst: einen Bitstrom-Demultiplexer (DeMUX), eine Codierungsteilband-Amplitudenhüllkurven-Decodiereinheit, eine Bitzuweisungseinheit, eine Frequenzbereichskoeffizienten-Decodiereinheit, eine Spektralbandreplikationseinheit, eine Rauschfülleinheit und eine Inverse Modifizierte Diskrete Cosinus-Transformation(IMDCT)-Einheit, wobei:
der DeMUX vorgesehen ist, um amplitudenhüllenkurvencodierte Bits, frequenzbereichskoeffizientencodierte Bits und rauschpegelcodierte Bits aus einem zu decodierenden Bitstrom zu trennen;
die Amplitudenhüllkurven-Decodiereinheit, die mit dem DeMUX verbunden ist, vorgesehen ist, um die Decodierung an amplitudenhüllkurvencodierten Bits durchzuführen, die vom Bitstrom-Demultiplexer ausgegeben wurden, um einen quantitativen Index der Amplitudenhüllkurve jedes Codierungsteilbands zu erhalten;
die Bitzuweisungseinheit, die mit der Amplitudenhüllkurven-Decodiereinheit verbunden ist, zur Durchführung der Bitzuweisung vorgesehen ist, um die Zahl der codierten Bits zu erhalten, die jedem Frequenzbereichskoeffizienten jedes Codierungsteilbands zugewiesen wurden;
die Frequenzbereichskoeffizienten-Decodiereinheit, die mit der Amplitudenhüllkurven-Decodierungseinheit und der Bitzuweisungseinheit verbunden ist, vorgesehen ist, um die Decodierung, Inversquantisierung und Inversnormalisierung am Codierungsteilband durchzuführen, um Frequenzbereichskoeffizienten zu erhalten;
die Rauschpegel-Decodiereinheit, die mit dem Bitstrom-Demultiplexer und der Bitzuweisungseinheit verbunden ist, vorgesehen ist, um die Decodierung und Inversquantisierung für rauschpegelcodierte Bits durchzuführen, um einen Rauschpegel zu erhalten;
die Spektrumsrekonstruktionseinheit, die mit der Rauschpegel-Decodiereinheit, der Frequenzbereichskoeffizienten-Decodiereinheit, der Amplitudenhüllkurven-Decodiereinheit und der Bitzuweisungseinheit verbunden ist, vorgesehen ist, um die Spektralbandreplikation an Nullbit-Codierungsteilbändern durchzuführen, einen Gesamtenergiefüllpegel des Codierungsteilbands der Amplitudenhüllkurve entsprechend zu regeln, die von der Amplitudenhüllkurven-Decodiereinheit ausgegeben wurde, und ein Energieverhältnis der Rauschfüllung zur Spektralbandreplikation dem Rauschpegel entsprechend zu regeln, der von der Rauschpegel-Decodiereinheit ausgegeben wurde, und rekonstruierte Frequenzbereichskoeffizienten von Nullbit-Codierungsteilbändern zu erhalten;
die IMDCT-Einheit, die mit der Spektrumsrekonstruktionseinheit verbunden ist, vorgesehen ist, um die IMDCT an Frequenzbereichskoeffizienten nach der Spektrumsrekonstruktion von Nullbit-Codierungsteilbändern durchzuführen und ein Audiosignal zu erhalten.
-
Bevorzugt umfasst die Spektrumsrekonstruktionseinheit: eine Spektralbandreplikationsuntereinheit, eine Energieanpassungsuntereinheit und eine Rauschfülluntereinheit, die in Reihe geschaltet sind, wobei
die Spektral bandreplikationsuntereinheit vorgesehen ist, um die Spektralbandreplikation an Nullbit-Codierungsteilbändern durchzuführen;
die Energieanpassungsuntereinheit vorgesehen ist, um eine Amplitudenhüllkurve von Frequenzbereichskoeffizienten zu berechnen, die nach der Spektralbandreplikation des Nullbit-Codierungsteilbands erhalten wurden, welche als sbr_rms(r) bezeichnet wird; und um die Energieanpassung an Frequenzbereichskoeffizienten, die nach der Replikation erhalten wurden, dem von der Rauschpegel-Decodiereinheit ausgegebenen Rauschpegel entsprechend durchzuführen, wobei die Formel zur Energieanpassung wie folgt ist:
X_sbr(r) = X_sbr(r)·sbr_lev_scale(r)·rms(r)/sbr_rms(r); wobei
X_sbr (r) den Frequenzbereichskoeffizienten nach der Energieanpassung des Nullbit-Codierungsteilbands r bezeichnet, X_sbr(r) den Frequenzbereichskoeffizienten bezeichnet, der nach der Replikation des Nullbit-Codierungsteilbands r erhalten wurde, sbr_rms(r) die Amplitudenhüllkurve des Frequenzbereichskoeffizienten X_sbr(r) ist, die nach der Replikation des Nullbit-Codierungsteilbands r erhalten wurde, rms(r) die Amplitudenhüllkurve des Frequenzbereichskoeffizienten vor der Codierung des Nullbit-Codierungsteilbands r ist, welche durch Inversquantisierung eines quantitativen Index der Amplitudenhüllkurve erhalten wird, und sbr_lev_scale(r) ein Energie-Skalierfaktor der Spektralbandreplikation des Nullbit-Codierungsteilbands r ist, dessen Wert durch den Rauschpegel des Rauschfüllteilbands bestimmt wird, wo das Nullbit-Codierungsteilband r liegt, und eine spezifische Berechnungsformel wie folgt ist:
wobei fill_energy_saclefactor ein Füllenergie-Skalierungsfaktor zur Anpassung eines Gewinns der Gesamtfüllenergie ist, dessen Wertebereich (0, 1) ist, und
P_noise_rate (j) der Rauschpegel des Rauschfüllteilbands j ist, der durch Decodierung und Inversquantisierung erhalten wird, wobei j die Sequenznummer des Rauschfüllteilbands ist, wo das Nullbit-Codierungsteilband r liegt.
die Rauschfülluntereinheit vorgesehen ist, um die Rauschfüllung an Frequenzbereichskoeffizienten nach der Energieanpassung dem von der Rauschpegel-Decodiereinheit ausgegebenen Rauschpegel entsprechend durchzuführen, und die Rauschfüllformel wie folgt ist:
X(r) = X_sbr(r) + rms(r)·noise_lev_scale(r)·random(); wobei
X (r) einen rekonstruierten Frequenzbereichskoeffizienten eines Nullbit-Codierungsteilbands r bezeichnet,
X_sbr (r) einen Frequenzbereichskoeffizienten nach der Energieanpassung des Nullbit-Codierungsteilbands r bezeichnet, rms(r) die Amplitudenhüllkurve der Frequenzbereichskoeffizienten vor der Codierung des Nullbit-Codierungsteilbands r ist, die durch Inversquantisierung des quantitativen Index der Amplitudenhüllkurve erhalten wird, random() ein Zufallsphasengenerator ist, der Zufallsphasenwerte generiert und +1 oder –1 zurückgibt, und noise_lev_scale(r) der Rauschpegel-Skalierfaktor des Nullbit-Codierungsteilbands r ist, dessen Wert durch den Rauschpegel des Rauschfüllteilbands bestimmt wird, wo das Nullbit-Codierungsteilband r liegt, und eine spezifische Berechnungsformel wie folgt ist:
wobei fill_energy_saclefactor ein Füllenergie-Skalierungsfaktor zur Anpassung eines Gewinns der Gesamtfüllenergie ist, und ein Wertebereich (0, 1) ist, und
P_noise_rate (j) der Rauschpegel eines Rauschfüllteilbands j ist, der durch Decodieren und Inversquantisieren erhalten wird, wobei j die Sequenznummer des Rauschfüllteilbands ist, wo das Nullbit-Codierungsteilband r liegt.
-
Bevorzugt umfasst die Spektralbandreplikationsuntereinheit ein Tonpositionssuchmodul, ein Perioden- und Quellfrequenzsegment-Berechnungsmodul, ein Quellfrequenzsegment-Replikationsstartsequenznummer-Berechnungsmodul und ein Spektralbandreplikationsmodul, die in Reihe geschaltet sind, wobei
das Tonpositionssuchmodul vorgesehen ist, um die Position eines bestimmten Tons des Audiosignals in MDCT-Frequenzbereichskoeffizienten zu suchen;
das Perioden- und Quellfrequenzsegment-Berechnungsmodul vorgesehen ist, um der Tonposition entsprechend eine Spektralbandreplikationsperiode und ein Quellfrequenzsegment für die Replikation zu bestimmen, wobei diese Spektralbandreplikationsperiode eine Bandbreite vorn Nullfrequenzpunkt zu einem Frequenzpunkt der Tonposition ist und dieses Quellfrequenzsegment ein Frequenzsegment von einem Frequenzpunkt des Nullfrequenzpunkts, der copyband_offset-Frequenzpunkte rückwärts verschiebt, bis zu einem Frequenzpunkt der Tonposition ist, der die copyband_offset-Frequenzpunkte rückwärts verschiebt;
das Quellfrequenzsegment-Replikationsstartsequenznummer-Berechnungsmodul vorgesehen ist, um dem Quellfrequenzsegment und einer Startsequenznummer des Nullbit-Codierungsteilbands, das der Spektralbandreplikation bedarf, entsprechend die Quellfrequenzsegment-Replikationsstartsequenznummer des Nullbit-Codierungsteilbands zu berechnen;
das Spektralbandreplikationsmodul vorgesehen ist, um die Spektralbandreplikationsperiode als eine Periode zu nehmen und Frequenzbereichskoeffizienten des Quellfrequenzsegments von der Quellfrequenzsegment-Replikationstartsequenznummer an periodisch auf das Nullbit-Codierungsteilband zu replizieren; und wenn die höchste Frequenz innerhalb des Nullbit-Codierungsteilbands kleiner ist als die Frequenz des gesuchten Tons, wendet dieser Frequenzpunkt zur Durchführung der Spektrumsrekonstruktion nur die Rauschfüllung an.
-
Bevorzugt wendet das Tonpositionssuchmodul die folgende Methode an, um die Tonposition zu suchen: das Nehmen eines Absolutwerts oder eines Quadratwerts der MDCT-Frequenzbereichskoeffizienten eines ersten Frequenzsegments und das Durchführen einer Glättungsfilterung; und einem Ergebnis der Glättungsfilterung entsprechend, das Suchen nach der Position eines maximalen Extremwerts der Filterungsausgaben des ersten Frequenzsegments, und die Position dieses maximalen Extremwerts ist dann die Tonposition.
-
Bevorzugt ist eine Operationsformel dieses Tonpositionssuchmoduls des Nehmens eines Absolutwerts der Frequenzbereichskoeffizienten des ersten Frequenzsegments zur Durchführung der Glättungsfilterung: X_ampi(k) = μX_ampi-1(k) + (1 – μ)| X i(k)|
oder eine Operationsformel des Nehmens eines Quadratwerts der Frequenzbereichskoeffizienten des ersten Frequenzsegments ist: X_ampi(k) = μX_ampi-1(k – 1) + (1 – μ)Xi(k)2 wobei μ ein Glättungsfilterungskoeffizient ist, X_ampi(k) Filterungsausgaben des k-ten Frequenzpunkts des i-ten Frames bezeichnet, und X i(k) MDCT-Koeffizienten nach der Decodierung des k-ten Frequenzpunkts des i-ten Frames sind, und wenn i = 0, X_ampi-1(k) = 0.
-
Bevorzugt ist das erste Frequenzsegment ein Frequenzsegment mit niedrigen Frequenzen, dessen Energie den spektralstatistischen Eigenschaften entsprechend stärker zentralisiert ist, wobei niedrige Frequenzen sich auf Spektralkomponenten beziehen, die weniger als die Hälfte einer Gesamtbandbreite eines Signals ausmachen.
-
Bevorzugt sucht das Tonpositionssuchmodul in den Filterungsausgaben der Frequenzbereichskoeffizienten, die dem ersten Frequenzsegment entsprechen, direkt nach einem anfänglichen Maximalwert, und dieser Maximalwert wird dann als der maximale Extremwert der Filterungsausgaben des ersten Frequenzsegments genommen.
-
Bevorzugt wird, wenn das Tonpositionssuchmodul den maximalen Extremwert der Filterungsausgaben bestimmt, ein Segment im ersten Frequenzsegment als ein zweites Frequenzsegment genommen, und ein anfänglicher Maximalwert wird in den Filterungsausgaben der Frequenzbereichskoeffizienten gesucht, die dem zweiten Frequenzsegment entsprechen, und je nach Position des Frequenzbereichskoeffizienten, der diesem anfänglichen Maximalwert entspricht, werden verschiedene Prozesse durchgeführt:
- a. wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz eines zweiten Frequenzsegments ist, das Vergleichen dieser Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des zweiten Frequenzsegments mit der Filterungsausgabe des Frequenzbereichskoeffizienten einer früheren niedrigeren Frequenz im ersten Frequenzsegment, und das Vergleichen fortlaufend vorwärts, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe eines früheren Frequenzbereichskoeffizienten, wobei die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten dann ein endgültig bestimmter maximaler Extremwert ist, oder das Vergleichen, bis die Filterungsausgabe des Frequenzbereichskoeffizienten einer niedrigsten Frequenz des ersten Frequenzsegments größer ist als die Filterungsausgabe eines späteren Frequenzbereichskoeffizienten, wobei die Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des ersten Frequenzsegments dann der endgültig bestimmte maximale Extremwert ist;
- b. wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten einer höchsten Frequenz des zweiten Frequenzsegments ist, das Vergleichen dieser Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des zweiten Frequenzsegments mit der Filterungsausgabe des Frequenzbereichskoeffizienten einer späteren höheren Frequenz im ersten Frequenzsegment, und das Vergleichen fortlaufend rückwärts, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des späteren Frequenzbereichskoeffizienten, wobei die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten dann der endgültig bestimmte maximale Extremwert ist, oder das Vergleichen, bis die Filterungsausgabe des Frequenzbereichskoeffizienten einer höchsten Frequenz des ersten Frequenzsegments größer ist als die Filterungsausgabe eines früheren Frequenzbereichskoeffizienten, wobei die Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des ersten Frequenzsegments dann der endgültig bestimmte maximale Extremwert ist;
- c. wenn dieser anfängliche Maximalwert die Filterungsausgabe eines Frequenzbereichskoeffizienten zwischen der niedrigsten Frequenz und der höchsten Frequenz im zweiten Frequenzsegment ist, ist der Frequenzbereichskoeffizient, der diesem anfänglichen Maximalwert entspricht, die Tonposition, das heißt, dieser anfängliche Maximalwert ist der endgültig bestimmte maximale Extremwert.
-
Bevorzugt umfasst ein Prozess des Quellfrequenzsegment-Startsequenznummer-Berechnungsmoduls zur Berechnung der Quellfrequenzsegment-Replikationsstartsequenznummer dieses Nullbit-Codierungsteilbands, das der Spektralbandreplikation bedarf: das Erhalten der Sequenznummer eines Startfrequenzpunkts des Nullbit-Codierungsteilbands, dessen Frequenzbereichskoeffizienten zu rekonstruieren sind, welche als fillband_start_freq bezeichnet wird, wobei eine Sequenznummer eines Frequenzpunkts, der dem Ton entspricht, als Tonal_pos bezeichnet wird, Tonal_pos plus 1 eine Spektralbandreplikationsperiode copy_period ergibt und eine Quellsegment-Startsequenznummer als copyband_offset bezeichnet wird, wobei der Wert von fillband_start_freq rekursiv von copy_period subtrahiert wird, bis dieser Wert in einem Wertebereich der Sequenznummer des Quellfrequenzsegments liegt, und dieser Wert dann die Quellfrequenzsegment-Replikationsstartsequenznummer ist, die als copy_pos_mod bezeichnet wird.
-
Bevorzugt werden, wenn das Spektralbandreplikationsmodul die Spektralbandreplikation durchführt, Frequenzbereichskoeffizienten von der Quellfrequenzsegment-Replikationsstartsequenznummer an rückwärts fortlaufend beginnend mit fillband_start_freq auf das Nullbit-Codierungsteilband repliziert, bis der Frequenzpunkt einer Quellfrequenzsegmentreplikation einen Frequenzpunkt Tonal_pos + copyband_offset erreicht, und die Frequenzbereichskoeffizienten werden vom copyband_offset-Frequenzpunkt an kontinuierlich rückwärts auf das Nullbit-Codierungsteilband repliziert usw., bis die Spektralbandreplikation aller Frequenzbereichskoeffizienten des aktuellen Nullbit-Codierungsteilbands abgeschlossen ist.
-
Bevorzugt ist die Bitzuweisungseinheit auch vorgesehen, um allen gültigen Rauschfüllteilbändern Bits zuzuweisen oder ein oder mehrere gültige Rauschfüllteilbänder mit niedrigen Frequenzen zu überspringen und nachfolgenden gültigen Rauschfüllteilbändern mit höheren Frequenzen Bits zuzuweisen; die Energieanpassungsuntereinheit führt die Energieanpassung an Frequenzbereichskoeffizienten durch, die nach der Spektralbandreplikation erhalten wurden; und die Rauschfülluntereinheit führt die Rauschfüllung an Frequenzbereichskoeffizienten nach der Energieanpassung und am Nullbit-Codierungsteilband des Rauschfüllteilbands durch, welchem keine Bits zugewiesen wurden.
-
Die vorliegende Erfindung schätzt das Leistungsspektrum des zu codierenden Audiosignals anhand der MDCT-Frequenzbereichskoeffizienten am Codierungsende und schätzt den Rauschpegel des Nullbit-Codierungsteilband-Audiosignals dem geschätzten Leistungsspektrum entsprechend, und nach dem Codieren der Rauschpegelinformation sendet sie die codierte Rauschpegelinformation an das Decodierungsende, um das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation am Decodierungsende zu regeln; nachdem die codierten MDCT-Frequenzbereichskoeffizienten am Decodierungsende decodiert und erhalten wurden, wird das Verfahren der Spektralbandreplikation und Rauschfüllung angewandt, um die Rekonstruktion der Frequenzbereichskoeffizienten am uncodierten Codierungsteilband durchzuführen, wobei das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation durch die rauschpegelcodierten Bits geregelt wird, die vom Codierungsende gesendet wurden. Dieses Verfahren kann die Spektralhüllkurve des uncodierten Codierungsteilbands und die internen Ton- und Rauschkomponenten gut wiederherstellen und einen besseren subjektiven Höreindruck erreichen.
-
Kurze Beschreibung der Zeichnungen
-
1 ist eine schematische Darstellung des erfindungsgemäßen Verfahrens zur Audiocodierung;
-
2 ist ein Flussdiagramm des erfindungsgemäßen Erhaltens der rauschpegelcodierten Bits des Nullbit-Codierungsteilbands im Inneren des Rauschfüllteilbands;
-
3 ist ein Flussdiagramm der erfindungsgemäßen Berechnung des Rauschpegels;
-
4 ist eine schematische Darstellung des erfindungsgemäßen Verfahrens zur Audiodecodierung;
-
5 ist ein Flussdiagramm der erfindungsgemäßen Spektrumsrekonstruktion;
-
6 ist eine schematische Strukturdarstellung des erfindungsgemäßen Systems zur Audiocodierung;
-
7 ist eine schematische Strukturdarstellung der Module der erfindungsgemäßen Rauschpegel-Schätzeinheit;
-
8 ist eine schematische Strukturdarstellung des erfindungsgemäßen Systems zur Audiodecodierung;
-
9 ist eine schematische Strukturdarstellung der Module der erfindungsgemäßen Spektrumsrekonstruktionseinheit;
-
10 ist eine schematische Darstellung der Codestrom-Zusammerisetzung nach einem Beispiel der vorliegenden Erfindung.
-
Bevorzugte Ausführungsformen der vorliegenden Erfindung
-
Der Kerngedanke der vorliegenden Erfindung ist, dass das Codierungsende das Leistungsspektrum des zu codierenden Audiosignals durch die MDCT-Frequenzbereichskoeffizienten schätzt und den Rauschpegel des Nullbit-Codierungsteilband-Audiosignals dem geschätzten Leistungsspektrum entsprechend schätzt, und nach dem Codieren der Rauschpegelinformation sendet es die codierte Rauschpegelinformation an das Decodierungsende, um das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation am Decodierungsende zu regeln; nach dem Decodieren und Erhalten der MDCT-Frequenzbereichskoeffizienten wendet das Decodierungsende das Verfahren der Spektralbandreplikation und Rauschfüllung an, um die Rekonstruktion der Frequenzbereichskoeffizienten an den uncodierten Codierungsteilbändern durchzuführen, wobei das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation durch die rauschpegelcodierten Bits geregelt wird, die vom Codierungsende gesendet wurden. Dieses Verfahren kann die Spektralhüllkurve des uncodierten Codierungsteilbands und die internen Ton- und Rauschkomponenten gut wiederherstellen und einen besseren subjektiven Höreindruck erreichen.
-
Alle Frequenzbereichskoeffizienten in der vorliegenden Erfindung beziehen sich auf die MDCT-Frequenzbereichskoeffizienten.
-
Im Folgenden wird die vorliegende Erfindung anhand von vier Teilen, dem Codierungsverfahren, dem Decodierungsverfahrens, dem Codierungssystem und dem Decodierungssystem, ausführlich beschrieben:
-
1. Das Codierungsverfahren
-
Das erfindungsgemäße Verfahren zur Audiocodierung umfasst die folgenden Schritte:
- A. die MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals werden in eine Vielzahl von Codierungsteilbänder aufgeteilt, und die Amplitudenhüllkurvenwerte jedes Codierungsteilbands werden quantisiert und codiert, um die amplitudenhüllkurvencodierten Bits zu erhalten;
während der Aufteilung in Codierungsteilbänder werden diese MDCT-transformierten Frequenzbereichskoeffizienten in eine Vielzahl von Codierungsteilbänder mit einheitlichen Intervallen aufgeteilt, oder sie werden den auditiven Wahrnehmungseigenschaften entsprechend in eine Vielzahl von uneinheitlichen Codierungsteilbändern aufgeteilt.
- B. die Bitzuweisung wird für jedes Codierungsteilband durchgeführt, und die Quantisierung und Codierung werden für Nicht-Nullbit-Codierungsteilbänder durchgeführt, um codierte Bits der MDCT-Frequenzbereichskoeffizienten zu erhalten; wenn nach Durchführung der Bitzuweisung an jedem Codierungsteilband die Bitzahl, die einem bestimmten Codierungsteilband zugewiesen wurde, null ist, werden die Quantisierung und Codierung für dieses Codierungsteilband nicht durchgeführt, und in dieser Anmeldung wird dieses Codierungsteilband als Nullbit-Codierungsteilband oder uncodiertes Codierungsteilband bezeichnet, und sonstige Codierungsteilbänder werden als Nicht-Nullbit-Codierungsteilband bezeichnet.
Welches Verfahren angewandt wird, um die Normalisierung, Quantisierung und Codierung an jedem Codierungsteilband durchzuführen, ist nicht Hauptgegenstand der vorliegenden Erfindung.
- C. das Leistungsspektrum des zu codierenden Audiosignals wird den MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend geschätzt, und ferner wird der Rauschpegel des Nullbit-Codierungsteilband-Audiosignals geschätzt, und durch die Quantisierung und Codierung werden rauschpegelcodierte Bits erhalten; wobei die rauschpegelcodierten Bits verwendet werden, um bei der Decodierung das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation zu regeln;
dieser Rauschpegel des Nullbit-Codierungsteilband-Audiosignals bezieht sich auf das Verhältnis der Rauschkomponentenleistung, die durch Schätzung in den Nullbit-Codierungsteilbändern erhalten wird, zur Tonkomponentenleistung, die durch Schätzung in den Nullbit-Codierungsteilbändern erhalten wird.
- D. die amplitudenhüllkurvencodierten Bits, die frequenzbereichskoeffizientencodierten Bits und die rauschpegelcodierten Bits jedes Codierungsteilbands werden gemultiplext und gepackt und an das Decodierungsende gesendet.
-
Im Folgenden wird das erfindungsgemäße Verfahren zur Audiocodierung Bezug nehmend auf die Figuren ausführlich beschrieben.
-
Beispiel 1 – Das Codierungsverfahren
-
1 ist ein schematisches Strukturdiagramm des Verfahrens zur Audiocodierung nach einem Beispiel der vorliegenden Erfindung. Im Beispiel wird der Audio-Stream mit einer Framelänge von 20 ms und einer Abtastrate von 32 kHz als Beispiel genommen, um das erfindungsgemäße Verfahren zur Audiocodierung zu veranschaulichen. Das erfindungsgemäße Verfahren ist auch bei anderen Framelängen und Abtastraten anwendbar. Wie in
1 gezeigt, umfasst dieses Verfahren:
101: die Modifizierte Diskrete Cosinus-Transformation (MDCT) wird für den zu codierenden Audio-Stream durchgeführt, um die Frequenzbereichskoeffizienten an N Frequenzbereich-Abtastpunkten zu erhalten;
die spezifische Implementierungsweise dieses Schritts könnte sein:
das N Punkte-Zeitbereichsabtastsignal x(n) des aktuellen Frames und das N Punkte-Zeitbereichsabtastsignal x
old(n) des vorherigen Frames ergeben ein 2N Punkte-Zeitbereichsabtastsignal
x (n), und das 2N Punkt-Zeitbereichsabtastsignal kann durch die folgende Formel ausgedrückt werden:
die MDCT-Transformation wird für
x (n) durchgeführt, um die folgenden Frequenzbereichskoeffizienten zu erhalten:
Wobei w(n) die Sinusfensterfunktion bezeichnet, die wie folgt ausgedrückt wird:
Wenn die Framelänge 20 ms ist und die Abtastrate 32 kHz ist, werden 640 Frequenzbereichskoeffizienten erhalten. Für andere Framelängen und Abtastraten können die entsprechenden Frequenzbereichskoeffizientenzahlen N ebenfsalls berechnet werden.
102: die N Frequenzbereichskoeffizienten werden in eine Vielzahl von Codierungsteilbändern aufgeteilt, und die Amplitudenhüllkurven jedes Codierungsteilbands wird berechnet;
das Beispiel wendet die uneinheitliche Teilbandaufteilung an, um die Frequenzbereichsamplitudenhüllkurve (einfach Amplitudenhüllkurve genannt) jedes Teilbands zu berechnen.
-
Dieser Schritt kann durch die folgenden Unterschritte implementiert werden:
102a: Frequenzbereichskoeffizienten im zu verarbeitenden Frequenzbandbereich werden in L Teilbänder aufgeteilt (die Codierungsteilbänder genannt werden können);
in diesem Beispiel ist der Frequenzbandbereich, der der Verarbeitung bedarf, 0–13,6 kHz, wofür die uneinheitliche Teilbandaufteilung den perzeptuellen Eigenschaften des menschlichen Gehörs entsprechend durchgeführt werden kann, und Tabelle 1 zeigt eine spezifische Aufteilungsweise.
-
Tabelle 1 teilt die Frequenzbereichskoeffizienten im Frequenzbandbereich von 0–13,6 kHz in 28 Codierungsteilbänder auf, das heißt, L = 28; und die Frequenzbereichskoeffizienten oberhalb von 13,6 kHz werden auf 0 gesetzt.
102b: die Amplitudenhüllkurve jedes Codierungsteilbands wird der folgenden Formel entsprechend berechnet:
Wobei LIndex(j) und HIndex(j) jeweils den Startfrequenzpunkt und den Endfrequenzpunkt des j-ten Codierungsteilbands bezeichnen, deren spezifische Werte in Tabelle 1 gezeigt werden. Tabelle 1: Beispiel für die uneinheitliche Aufteilung des Frequenzbereichs in Teilbänder.
Die Teilband-Sequenznummer | Die Startfrequenzpunkte (Lindex) | Die Endfrequenzpunkte (HIndex) | Der Teilbandbreiten (BandWidth) |
0 | 0 | 7 | 8 |
1 | 8 | 15 | 8 |
2 | 16 | 23 | 8 |
3 | 24 | 31 | 8 |
4 | 32 | 47 | 16 |
5 | 48 | 63 | 16 |
6 | 64 | 79 | 16 |
7 | 80 | 95 | 16 |
8 | 96 | 111 | 16 |
9 | 112 | 127 | 16 |
10 | 128 | 143 | 16 |
11 | 144 | 159 | 16 |
12 | 160 | 183 | 24 |
13 | 184 | 207 | 24 |
14 | 208 | 231 | 24 |
15 | 232 | 255 | 24 |
16 | 256 | 279 | 24 |
17 | 280 | 303 | 24 |
18 | 304 | 327 | 24 |
19 | 328 | 351 | 24 |
20 | 352 | 375 | 24 |
21 | 376 | 399 | 24 |
22 | 400 | 423 | 24 |
23 | 424 | 447 | 24 |
24 | 448 | 471 | 24 |
25 | 472 | 495 | 24 |
26 | 496 | 519 | 24 |
27 | 520 | 543 | 24 |
103: die Amplitudenhüllkurve jedes Codierungsteilbands wird quantisiert und codiert, um den quantitativen Index der Amplitudenhüllkurve und die codierten Bits des quantitativen Index der Amplitudenhüllkurve (nämlich die amplitudenhüllkurvencodierten Bits) zu erhalten;
die folgende Formel (5) wird angewandt, um die Quantisierung der Amplitudenhüllkurve jedes Codierungsteilbands durchzuführen, dass Formel (4) entsprechend berechnet wurde, und den quantitativen Index der Amplitudenhüllkurve jedes Codierungsteilbands zu erhalten:
Thq(j) = ⌊2log2Th(j)⌋ (5)
-
Wobei ⌊x⌋ die Abrundung bezeichnet, Thq(0) der quantitative Index der Amplitudenhüllkurve des ersten Codierungsteilbands ist und der Bereich auf [–5, 34] begrenzt ist, das heißt, wenn Thq(0) < –5, dann Thq(0) = –5; und wenn Thq(0) > 34, dann Thq(0) = 34.
-
Die dem quantitativen Index der Amplitudenhüllkurve gemäß rekonstruierte Hüllkurve ist 2Thq(j)/2.
-
Der quantitative Index der Amplitudenhüllkurve des ersten Codierungsteilbands wird durch 6 Bits codiert, das heißt, verbraucht 6 Bits.
-
Die Differenzwerte zwischen quantitativen Indizes der Amplitudenhüllkurven jedes Codierungsteilbands werden durch Anwendung der folgenden Formel berechnet: ΔThq(j) = Thq(j + 1) – Thq(j) j = 0, L, L – 2 (6)
-
Die Amplitudenhüllkurve kann wie folgt modifiziert werden, um sicherzustellen, dass der Bereich von ΔThq(j) innerhalb von [–15, 16] liegt:
Wenn ΔThq(j) < –15, dann ist ΔThq(j) = –15, Thq(j) = Thq(j + 1) + 15, j = L – 2, L, 0;
Wenn ΔThq(j) > 16, dann ist ΔThq(j) = 16, Thq(j + 1) = Thq(j) + 16, j = 0, ..., L – 2;
für ΔThq(j), j = 0, ..., L – 2 wird die Huffman-Codierung durchgeführt, und die dabei verbrauchten Bits (Huffman-codierte Bits genannt) werden berechnet. Wenn die Huffman-codierten Bits dabei größer oder gleich der festgelegten und zugewiesenen Bitzahl sind (größer als (L – 1) × 5 in diesem Beispiel), dann wird das natürliche Codierungsverfahren angewandt, um ΔThq(j), j = 0, ..., L – 2 zu codieren, und das Flag-Bit der Amplitudenhüllkurven-Huffman-Codierung der Flag_huff_rms wird auf 0 gesetzt, andernfalls wird ΔThq(j), j = 0, ...,L – 2 mit der Huffman-Codierung codiert, und das Flag-Bit der Amplitudenhüllkurven-Huffman-Codierung Flag_huff_rms wird auf 1 gesetzt. Die codierten Bits des quantitativen Index der Amplitudenhüllkurve (das heißt, die codierten Bits der Amplitudenhüllkurven-Differenzwerte) und das Huffman-codierte Flag-Bit der Amplitudenhüllkurve werden an den MUX gesendet.
104: für jedes Codierungsteilband wird die Bitzuweisung der Signifikanz jedes Codierungsteilbands entsprechend durchgeführt;
zuerst wird ein Anfangswert der Signifikanz jedes Codierungsteilbands der Code-Rate-Distortion-Theorie und der Codierungsteilband-Amplitudenhüllkurveninformation entsprechend berechnet, und dann wird der Signifikanz jedes Teilbands entsprechend für jedes Teilband die Bitzuweisung durchgeführt; dieser Schritt kann durch die folgenden Unterschritte implementiert werden:
104a: der Durchschnittswert des Bitverbrauchs einzelner Frequenzbereichskoeffizienten wird berechnet;
die Bitzahl, die durch die Nebeninformation bit_sides verbraucht wird, die rauschpegelinformationsreservierten Bits des Rauschfüllteilbands bits_noiseband und die Bitzahl bits_Th, die durch die Codierungsteilband-Amplitudenhüllkurve verbraucht wird, werden von der insgesamt verfügbaren Bitzahl bits_available der 20 ms-Framelänge abgezogen, um die Zahl der verbleibenden Bits bits_left zu erhalten, die für die Frequenzbereichskoeffizientencodierung verwendet werden können, das heißt: bits_left = bits_available – bit_sides – bits_Th – bits_noiseband (7)
-
Die rauschpegelinformationsreservierten Bits des Rauschfüllteilbands bits_noiseband sind Bits, die für die rauschpegelcodierten Bits des Rauschfüllteilbands reserviert sind, und wenn nach Abschluss der Bitzuweisung des Rauschfüllteilbands noch Bits übrig bleiben, dann werden die verbleibenden rauschpegelinformationsreservierten Bits des Rauschfüllteilbands bits_noiseband für die Bitzuweisung und -modifikation verwendet.
-
Die Nebeninformation umfasst die Bits des Amplitudenhüllkurven-Huffman-Codierungsflags Flag_huff_rms, des Frequenzbereichskoeffizienten-Huffman-Codierungsflags Flag_huff_plvq und der Iterationshäufigkeit count. Flag_huff_rms wird verwendet, um anzugeben, ob die Huffman-Codierung für die Teilband-Amplitudenhüllkurve angewandt wird; Flag_huff_plvq wird verwendet, um anzugeben, ob die Huffman-Codierung bei der Durchführung der Vektorquantisierung und -codierung an den Frequenzbereichskoeffizienten angewandt wird, und die Iterationshäufigkeit count wird verwendet, um die Iterationshäufigkeit bei der Bitzuweisung und -modifikation anzugeben (Details sind in der Beschreibung der folgenden Schritte zu finden).
104b: der Anfangswert der Signifikanz in der Bitzuweisung jedes Codierungsteilbands wird berechnet:
rk(j) wird verwendet, um die Signifikanz für die Bitzuweisung des j-ten Codierungsteilbands zu bezeichnen.
104c: für jedes Codierungsteilband wird die Bitzuweisung der Signifikanz jedes Codierungsteilbands entsprechend durchgeführt;
die spezifische Beschreibung ist wie folgt:
Zuerst wird das Codierungsteilband, wo der Maximalwert liegt, in jedem rk(j) gefunden, und die Nummer dieses Codierungsteilbands wird als jk angenommen, und dann wird die codierte Bitzahl jedes Frequenzbereichskoeffizienten in diesem Codierungsteilband erhöht, und die Signifikanz dieses Codierungsteilbands wird verringert; gleichzeitig wird die verbrauchte Gesamtbitzahl für dieses Codierungsteilband bit_band_used(jk) berechnet, schließlich wird die Summe der verbrauchten Bitzahl aller Codierungsteilbänder sum(bit_band_used(j)), j = 0, ..., L – 1 berechnet; und die obigen Prozesse werden wiederholt, bis die Summe der verbrauchten Bitzahl den Maximalwert der verfügbaren Bits unter einschränkenden Bedingungen erreicht.
-
Die Bitzuweisungszahl bezieht sich auf die Bitzahl, die einem einzelnen Frequenzbereichskoeffizienten in einem Codierungsteilband zugewiesen wird. Die verbrauchte Bitzahl eines Codierungsteilbands bezieht sich auf die Bitzahl, die einem einzelnen Frequenzbereichskoeffizienten in diesem Codierungsteilband zugewiesen wird, multipliziert mit der Zahl der Frequenzbereichskoeffizienten, die in diesem Codierungsteilband enthalten sind.
-
In diesem Beispiel ist für die Codierungsteilbänder, deren Bitzuweisungszahl 0 ist, die Schrittweite bei der Bitzuweisung 1 Bit, und die signifikanzreduzierte Schrittweite nach der Bitzuweisung ist 1, und für die Codierungsteilbänder, deren Bitzuweisungszahl größer als 0 und kleiner als der Schwellenwert 5 ist, ist die Schrittweite beim Addieren der Bitzuweisung 0,5 Bit, und die signifikanzreduzierte Schrittweite nach der Bitzuweisung ist ebenfalls 0,5 Bit, und für die Codierungsteilbänder, deren Bitzuweisungszahl größer als der Schwellenwert 5 ist, ist die Schrittweite bei der Bitzuweisung 1, und die signifikanzreduzierte Schrittweite nach dem Addieren der Bitzuweisung ist ebenfalls 1.
-
Das Verfahren zur Bitzuweisung in diesem Schritt kann durch die folgenden Pseudocodes ausgedrückt werden:
Schließlich werden der Signifikanz des Codierungsteilbands entsprechend die weniger als 24 verbleibenden Bits den Codierungsteilbändern, die die Anforderungen erfüllen, dem folgenden Prinzip gemäß zugewiesen: Bevorzugtes Zuweisen von 0,5 Bit an jeden Frequenzbereichskoeffizienten im Codierungsteilband, dessen Bitzuweisung 1 ist, und gleichzeitiges Verringern der Signifikanz dieses Codierungsteilbands um 0,5; andernfalls Zuweisen von 1 Bit an jeden Frequenzbereichskoeffizienten im Teilband, dessen Bitzuweisung 0 ist, und gleichzeitiges Verringern der Signifikanz dieses Codierungsteilband um 1, bis bit_left-bit_used_al1 < 4, und die Bitzuweisung ist dann abgeschlossen.
-
Wobei MaxBit die maximale codierte Bitzahl ist, die einem einzelnen Frequenzbereichskoeffizienten im Codierungsteilband zugewiesen wird. Dieses Beispiel wendet MaxBit = 9 an. Dieser Wert kann der Codierungscoderate des Codierers und Decodierers entsprechend angepasst werden. region_bit(j) ist die Bitzahl, die einem Signalfrequenzbereichskoeffizienten im j-ten Codierungsteilband zugewiesen wird.
105: dem Bitzuweisungsergebnis von Schritt 104 entsprechend werden den gültigen Rauschfüllteilbändern, die Nullbit-Codierungsteilbänder enthalten, Bits zugewiesen; das Leistungsspektrum des Audiosignals wird anhand der MDCT-Frequenzbereichskoeffizienten geschätzt, und der Rauschpegel der gültigen Rauschfüllteilbänder wird dem geschätzten Leistungsspektrum entsprechend geschätzt; und diese Rauschpegelinformationen wird quantisiert und codiert, um die rauschpegelcodierten Bits der Rauschfüllteilbänder zu erhalten;
N MDCT-Frequenzbereichskoeffizienten können als ein Rauschfüllteilband betrachtet werden, und können auch einheitlich aufgeteilt werden, oder den menschlichen Höreigenschaften entsprechen in eine Vielzahl von Rauschfüllteilbändern aufgeteilt werden. Ein Rauschfüllteilband enthält ein oder mehrere Codierungsteilbänder.
-
Die vorliegende Erfindung bezeichnet ein Rauschfüllteilband, das Nullbit-Codierungsteilbänder enthält, als gültiges Rauschfüllteilband.
-
Wenn die Bitzuweisung an Rauschfüllteilbändern durchgeführt wird, können alle gültigen Rauschfüllteilbändern Bits zugewiesen werden, und es können auch ein oder mehrere gültige Rauschfüllteilbändern mit niedrigen Frequenzen übersprungen und nachfolgenden gültigen Rauschfüllteilbändern mit höheren Frequenzen Bits zugewiesen werden, und dementsprechend wird während des Decodierens die Füllung mit Weißrauschen angewandt, um die Spektrumsrekonstruktion an den Nullbit-Codierungsteilbändern in Rauschfüllteilbändern mit niedrigen Frequenzen durchzuführen, denen keine Bits zugewiesen wurden.
-
Jedem gültigen Rauschfüllteilband wird die gleiche Bitzahl zugewiesen, oder jedem gültigen Rauschfüllteilband werden den Höreigenschaften des menschlichen Ohrs entsprechend verschiedene Bitzahlen zugewiesen. Nach dem Erhalt der rauschpegelcodierten Bits der gültigen Rauschfüllteilbänder werden diese Bits dann gemultiplext und gepackt.
106: die Quantisierung und Codierung wird an Vektoren der Nicht-Nullbit-Codierungsteilbänder durchgeführt, um die frequenzbereichskoeffizienteneodierten Bits zu erhalten. 107: der codierte Codestrom wird zusammengesetzt.
-
10 ist eine schematische Darstellung der Codestrom-Zusammensetzung nach einem Beispiel der vorliegenden Erfindung. Zuerst wird die Nebeninformation der folgenden Sequenz entsprechend in den Bitstrom-Multiplexer MUX geschrieben: Flag_huff_rms, Flag_huff_plvq und count, dann werden die amplitudenhüllkurvencodierten Bits der Codierungsteilbänder in den MUX geschrieben, dann werden die rauschpegelcodierten Bits in den MUX geschrieben, und dann werden die frequenzbereichskoeffizientencodierten Bits in den MUX geschrieben; und schließlich wird der durch die obige Sequenz geschriebene Codestrom an das Decodierungsende gesendet.
-
Um den Schritt 105 Bezug nehmend auf die Figuren im Detail zu beschreiben, wird im Folgenden als Beispiel genommen, dass die N MDCT-Frequenzbereichskoeffizienten in eine Vielzahl von Rauschfüllteilbändern aufgeteilt wurden und Bits aus dem zweiten gültigen Rauschfüllteilband zugewiesen werden.
-
Wie in
2 gezeigt, umfasst der Prozess des Erhaltens der rauschpegelcodierten Bits der Nullbit-Codierungsteilbänder innerhalb der Rauschfüllteilbänder spezifisch:
201: die Codierungsteilbänder werden in eine Vielzahl von Rauschfüllteilbändern aufgeteilt, und dem Bitzuweisungsergebnis des Codierungsteilbands entsprechend werden den gültigen Rauschfüllteilbändern Bits zugewiesen;
die Frequenzbereichskoeffizienten im Frequenzbereich, der der Verarbeitung bedarf, werden den Höreigenschaften des menschlichen Ohrs entsprechend in mehrere Teilbänder aufgeteilt, wobei diese Teilbänder Rauschfüllteilbänder genannt werden; und ein Rauschfüllteilband enthält ein oder mehrere Codierungsteilbänder;
Eine spezifische Aufteilungsweise in einem Beispiel wird in Tabelle 2 gezeigt: Tabelle 2: Beispiel für die uneinheitliche Aufteilung in Rauschfüllteilbänder
Rauschfüllteilband Sequenznummer | Startcodierungsteilband-Sequenznummer (NLIndex) | Endcodierungsteilband-Sequenznummer (NHIndex) | Zahl der enthaltenen Codierungsteilbänder (SubBandNum) |
0 | 0 | 11 | 12 |
1 | 12 | 13 | 2 |
2 | 14 | 16 | 3 |
3 | 17 | 20 | 4 |
4 | 21 | 28 | 8 |
-
In der obigen Tabelle 2 sind die Rauschfüllteilbänder der Codierungsteilbandfrequenz nach von niedrig zu hoch geordnet.
-
Es wird angenommen, dass die rauschpegelinformationsreservierten Bits der Rauschfüllteilbänder zwei Bits sind, die in jedem Rauschfüllteilband mit Ausnahme des Rauschfüllteilbands mit der Sequenznummer 0 reserviert sind, und dass die reservierte Gesamtbitzahl der Anzahl der Rauschfüllteilbänder minus 1 und dann multipliziert mit 2 entspricht.
-
Während der Bitzuweisung werden dem Rauschfüllteilband mit der Sequenznummer 0, das keine codierten Bits aufweist, keine Bits zugewiesen, und dementsprechend wird dann für Rauschfüllteilbänder mit der Sequenznummer 0, wenn sie keine Nullbit-Codierungsteilbänder enthalten, während des Decodierens die Weißrauschfüllung angewandt, um das Spektrum an den Frequenzbereichskoeffizienten der Nullbit-Codierungsteilbänder zu rekonstruieren, siehe Schritt 504 im Detail; vom Rauschfüllteilband mit der Sequenznummer 1 an wird beurteilt, ob das Nullbit-Codierungsteilband innerhalb dieses Rauschfüllteilbands liegt, und wenn dieses Rauschfüllteilband das Nullbit-Codierungsteilband aufweist, dann werden diesem Rauschfüllteilband 2 Bits zugewiesen, um die Rauschpegelinformationen der Nullbit-Codierungsteilbänder in diesem Rauschfüllteilband anzugeben, und von den rauschpegelinformationsreservierten Bits des Rauschfüllteilbands bits_noiseband werden 2 subtrahiert. Nach Abschluss der Bitzuweisung aller Rauschfüllteilbänder werden die verbleibenden rauschpegelinformationsreservierten Bits bits_noiseband für die Bitzuweisung und -modifikation verwendet.
-
Die Bitzuweisungsmethode für das Rauschfüllteilband in diesem Schritt kann durch die folgenden Pseudocodes ausgedrückt werden:
-
Jedes Bit, das den Rauschfüllteilbändern fortlaufend zugewiesen wird, wird nachstehend rauschpegelcodiertes Bit genannt.
-
Das Obige ist der Prozess der Bitzuweisung für die Rauschfüllteilbänder, und eine bestimmte Zahl von Bits (zum Beispiel 2 Bits) kann direkt in jedem Rauschfüllteilband reserviert werden.
202: auf der Grundlage der Rauschfüllteilband-Aufteilungsweise von Tabelle 2 wird das Leistungsspektrum der 4 Rauschfüllteilbandsignale mit den Sequenznummern 1, 2, 3 und 4 anhand der MDCT-Koeffizienten geschätzt:
der Leistungsspektrum-Schätzalgorithmus des Frequenzpunkts k des i-ten Rahmens ist Formel (13) gemäß: P1(k) = λPi-1(k) + (1 – λ)Xi(k)2 (13) wobei, wenn i gleich 0 ist, Pi-1(k) = 0; Pi(k) die geschätzten Leistungswerte des k-ten Frequenzpunkts des i-ten Frames bezeichnet. Xi(k) bezeichnet die MDCT-Koeffizienten des k-ten Frequenzpunkts des i-ten Rahmens, und λ ist ein Filterungskoeffizient eines unipolaren Glättungsfilters, wobei in einem Beispiel λ = 0.875.
-
Das Prinzip der Ableitung der Leistungsspektrumsschätzung durch die MDCT ist wie folgt:
Die folgende Formel ergibt die Discrete Time Fourier-Transformation (DTFT) bei der Winkelfrequenz ω des Signals mit 2M Länge:
-
Die DTFT wird bei 2M Frequenzen mit einheitlichen Intervallen zwischen 0 und 2π abgetastet. Die abgetastete Transformation wird als Diskrete Fourier-Transformation (DFT) bezeichnet, und die folgende Formel ergibt die DFT am Frequenzpunkt k:
-
Die DTFT wird mit einem Versatz von einem halben Frequenzpunkt abgetastet, um die Shift Discrete Fourier-Transformation (SDFT) zu erzeugen:
-
Die SDFT, die durch Addieren des Fensters in ein praktisches Signal x(n) erhalten wird, ist wie folgt:
-
Der Formel (2) entsprechend wird der MDCT-Frequenzbereichskoeffizient X(k) als X
MDCT(k) bezeichnet, wobei M – N, und die Formel (2) wird wie folgt umgeschrieben:
-
Die SDFT und die MDCT verwenden denselben Fenstertyp, wobei x(n) = x(n);
Die Beziehung zwischen der MDCT und der SDFT des praktischen Signals x(n) kann durch die folgende Formel ausgedrückt werden:
-
Das heißt, die MDCT kann durch die Amplitude der cosinusmodulierten SDFT ausgedrückt werden, und dieser Cosinus ist eine Winkelfunktion der SDFT.
-
Das Leistungsspektrum des Signals wird durch SDFT der kontinuierlich überlappenden fensteraddierten Blöcke des Audiosignals geschätzt, und es wird angenommen, dass die Transformationslänge des Signals x gleich 2M ist, und dann gibt die folgende Formel die Short Time Shift Discrete Fourier-Transformation (STSDFT) am Frequenzpunkt k und Block t:
-
H ist die Sprunglänge des Blocks. Wenn H = M, weisen die STSDFT und die MDCT die gleiche Sprunglänge auf.
-
Das Leistungsspektrum des Signals kann mithilfe der STSDFT durch Mittelung der Amplituden-Quadrate von X
SDFT[k, t] in vielen Blöcken t erhalten werden, und der gleitende Mittelwert der Blöcke der Länge T wird der folgenden Formel entsprechend berechnet, um die Zeitvarianzschätzung des Leistungsspektrums zu erzeugen:
-
Der Berechnungsbeziehung der MDCT und SDFT entsprechend kann P
STSDFT(k, t) unter bestimmten Annahmebedingungen X
MDCT(k, t) gemäß annähernd erhalten werden. Definition:
-
Der Formel (18) entsprechend ergibt sich:
-
Wenn angenommen wird, dass |X
STSDFT(k, t – η)| und
in Blöcken relativ zueinander und unabhängig voneinander variieren (diese Annahme trifft auf die meisten Audiosignale zu), dann ergibt sich:
-
Wenn ferner angenommen wird, dass
in der Gesamtheit der T Blöcke gleichmäßig zwischen 4 und 2π verteilt ist, und wenn T relativ groß ist, dann ergibt sich, weil der erwartete Wert des Cosinus-Quadrats des einheitlich verteilten Phasenwinkels die Hälfte ist:
-
Daraus ist zu ersehen, dass das durch die MDCT geschätzte Leistungsspektrum etwa der Hälfte des durch die STSDFT geschätzten Leistungsspektrums entspricht.
-
Aufgrund der Forderung nach einer geringen Codierungsverzögerung wird zur Durchführung des Leistungsspektrumsschätzung der unipolare Glättungsfilter gewählt, und in PMDCT(k, t) wird der Block t als i bezeichnet und als Index geschrieben, und PMDCT(k, t) kann als Pi(k) geschrieben werden, und die Länge des Blocks ist die Länge eines Frames des Audiosignals, und dann bezeichnet i die Nummer des Frames, und der endgültige Schätzalgorithmus kann als Formel (13) erhalten werden, und die Formel (13) ist der Schätzalgorithmus des Leistungsspektrums in der vorliegenden Erfindung.
203: dem durch die Formel (13) geschätzten Leistungsspektrum entsprechend werden die Rauschpegel der Nullbit-Codierungsteilbänder in jedem Rauschfüllteilband, welchen Bits zugewiesen wurden, berechnet.
-
Wie in 3 gezeigt, ist der spezifische Prozess zur Berechnung des Rauschpegels: Schritt 301: der Durchschnittwert der Leistungen aller Frequenzbereichskoeffizienten aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem Rauschfüllteilband wird berechnet, um die Durchschnittsleistung P_aveg(j) zu erhalten;
Schritt 302: die Frequenzbereichskoeffizienten, deren Leistungen größer sind als die Durchschnittsleistung aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem Rauschfüllteilband, werden als die Tonkomponenten in diesem Rauschfüllteilband betrachtet, und der Durchschnittswert der Leistungen aller Frequenzbereichskoeffizienten, deren Leistungen größer sind als Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband, wird berechnet, um die Tonkomponenten-Durchschnittsleistung P_signal_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten;
Schritt 303: die Frequenzbereichskoeffizienten, deren Leistungen kleiner sind als die Durchschnittsleistung aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem Rauschfüllteilband, werden als die Rauschkomponenten in diesem Rauschfüllteilband betrachtet, und der Durchschnittswert der Leistungen aller Frequenzbereichskoeffizienten, deren Leistungen kleiner sind als Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband, wird berechnet, um die Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten;
Schritt 304: das Verhältnis P_noise_rate(j) der Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) zur Tonkomponenten-Durchschnittsleistung P_signal_aveg(j) wird berechnet, um den Rauschpegel dieses gültigen Rauschfüllteilbands zu erhalten.
-
Der Rauschpegel wird quantisiert und codiert, um die rauschpegelcodierten Bits zu erhalten;
P_noise_rate(j) wird quantisiert und codiert, um P_noise_rate_bits(j) zu erhalten.
-
Nach Abschluss der Quantisierung und Codierung der Rauschpegel werden die rauschpegelcodierten Bits des Rauschfüllteilbands, welchem Bits zugewiesen wurden, der Sequenznummer des Teilbands entsprechend von niedrig zu hoch geordnet, um die Gesamtheit der rauschpegelcodierten Bits des gültigen Rauschfüllteilbands zu erhalten.
-
Ein Beispiel für die Anwendung der uneinheitlichen Quantisierung wird in Tabelle 3 gezeigt: Tabelle 3: Beispiel für die uneinheitliche Quantisierung des Rausch-Signal-Verhältnisses
p_noise_rate(j) | P_noise_rate_bits(j) |
[0, 0.04) | 00 |
[0.04, 0.08) | 01 |
[0.08, 0.16) | 10 |
[0.16,1) | 11 |
-
Der Rauschpegel dieses gültigen Rauschfüllteilbands ist der Rauschpegel des Nullbit-Codierungsteilbands in diesem Rauschfüllteilband, und über die Bezeichnung P_noise_rate(j) hinaus kann der Rauschpegel auch durch das Verhältnis der Tonkomponenten-Durchschnittsleistung P_signal_aveg(j) zur Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) angegeben werden.
-
2. Das Decodierungsverfahren
-
Das Verfahren zur Audiodecodierung in der vorliegenden Erfindung ist ein inverser Prozess des Codierungsverfahrens und umfasst:
- A. jedes amplitudenhüllkurvencodierte Bit in einem zu decodierenden Bitstrom wird decodiert, um einen quantitativen Index der Amplitudenhüllkurve jedes Codierungsteilbands zu erhalten;
- B. jedem Codierungsteilband werden Bits zugewiesen, und die rauschpegelcodierten Bits werden decodiert und invers quantisiert, um den Rauschpegel der Nullbit-Codierungsteilbänder zu erhalten, und die frequenzbereichskoeffizientencodierten Bits werden decodiert und invers quantisiert, um die Frequenzbereichskoeffizienten der Nicht-Nullbit-Codierungsteilbänder zu erhalten;
- C. die Spektralbandreplikation wird für die Nullbit-Codierungsteilbänder durchgeführt, und der Amplitudenhüllkurve jedes Nullbit-Codierungsteilbands im zu decodierenden Bitstrom entsprechend wird der Gesamtenergiefüllpegel dieses Codierungsteilbands geregelt, und dem Rauschpegel dieses Nullbit-Codierungsteilbands entsprechend wird das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation geregelt, und die rekonstruierten Frequenzbereichskoeffizienten der Nullbit-Codierungsteilbänder werden erhalten;
- D. für die Frequenzbereichskoeffizienten der Nicht-Nullbit-Codierungsteilbänder und die rekonstruierten Frequenzbereichskoeffizienten der Nullbit-Codierungsteilbänder wird die Inverse Modifizierte Diskrete Cosinus-Transformation (IMDCT) durchgeführt, um das Endaudiosignal zu erhalten.
-
4 ist ein schematisches Strukturdiagramm des Verfahrens zur Audiodecodierung nach einem Beispiel der vorliegenden Erfindung. Wie in 4 gezeigt, umfasst dieses Verfahren:
401: jedes amplitudenhüllkurvencodierte Bit wird decodiert, um den quantitativen Index der Amplitudenhüllkurve jedes Codierungsteilbands zu erhalten;
ein Frame codierter Bits wird aus einem codierten Bitstrom extrahiert, der vom Codierungsende (d. h., vom Bitstrom-Demultiplexer DeMUX) gesendet wurde; nach der Extraktion der codierten Bits wird zuerst die Nebeninformationen decodiert, und dann wird dem Wert des Amplitudenhüllkurven-Huffman-Codierungsflags Flag_huff_rms entsprechend die Huffman-Decodierung oder die direkte Decodierung für jedes amplitudenhüllkurvencodierte Bit in diesem Frame durchgeführt, um den quantitativen Index der Amplitudenhüllkurve jedes Codierungsteilbands Thq(J), j = 0, ..., L – 1 zu erhalten.
402: für jedes Codierungsteilband wird die Bitzuweisung durchgeführt, und die Bitzuweisung wird für das gültige Rauschfüllteilband durchgeführt;
dem quantitativen Index der Amplitudenhüllkurve jedes Codierungsteilbands entsprechend wird ein Anfangswert der Signifikanz jedes Codierungsteilbands berechnet, und die Bitzuweisung wird für jedes Codierungsteilband anhand der Signifikanz jedes Codierungsteilbands durchgeführt, um die Bitzuweisungszahl des Codierungsteilbands zu erhalten; und das Bitzuweisungsverfahren am Decodierungsende ist mit dem am Codierungsende völlig identisch. In der Bitzuweisung werden die Bitzuweisungsschrittweite und signifikanzreduzierte Schrittweite des Codierungsteilbands nach der Bitzuweisung variiert.
-
Nach Abschluss des obigen Bitzuweisungsprozesses wird dem Wert der Iterationshäufigkeit der Bitzuweisung und -modifikation count am Decodierungsende und der Signifikanz jedes Codierungsteilbands entsprechend die Bitzuweisung und -modifikation für die Codierungsteilbänder count mal durchgeführt, und dann wird der ganze Prozess der Bitzuweisung beendet.
-
In den Bitzuweisungs- und -modifikationsprozessen ist die Bitzuweisungsschrittweite und die Bitzuweisungs- und -modifikationsschrittweite 1 Bit, wenn Bits den Codierungsteilbändern zugewiesen werden, deren Bitzuweisungszahl 0 ist, und die signifikanzreduzierten Schrittweiten nach der Bitzuweisung und -modifikation sind 1, und für Codierungsteilbänder, deren Bitzuweisungszahl größer als 0 und kleiner als ein bestimmter Schwellenwert ist, sind die Bitzuweisungsschrittweite und die Bitzuweisungs- und -modifikationsschrittweite beim Addieren der Bitzuweisung 0,5 Bit, und die signifikanzreduzierten Schrittweiten nach der Bitzuweisung und -modifikation sind ebenfalls 0,5, und für Codierungsteilbänder, deren Bitzuweisungszahl größer oder gleich diesem Schwellenwert ist, ist die Bitzuweisungsschrittweite und die Bitzuweisungs- und -modifikationsschrittweite beim Addieren der Bitzuweisung 1 Bit, und die signifikanzreduzierten Schrittweiten nach der Bitzuweisung und -modifikation sind ebenfalls 1.
-
Die Codierungsteilbänder werden in eine Vielzahl von Rauschfüllteilbändern aufgeteilt, und dem Bitzuweisungsergebnis des Codierungsteilbands entsprechend werden den gültigen Rauschfüllteilbändern Bits zugewiesen; die Aufteilungsweise der Rauschfüllteilbänder und die Bitzuweisungsweise der Rauschfüllteilbänder sind dieselben die im Codierungsverfahren, und deshalb wird nicht näher darauf eingegangen.
403: die Decodierung und die Inversquantisierung werden für die rauschpegelcodierten Bits durchgeführt, um den Rauschpegel der Nullbit-Codierungsteilbänder zu erhalten, und die Decodierung und Inversquantisierung werden für die frequenzbereichskoeffizientencodierten Bits durchgeführt, um die MDCT-Frequenzbereichskoeffizienten zu erhalten; 404: die Spektralbandreplikation wird für die Nullbit-Codierungsteilbänder durchgeführt, der Gesamtenergiefüllpegel des Codierungsteilbands wird der Amplitudenhüllkurve der Nullbit-Codierungsteilbänder entsprechend geregelt, und das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation wird dem Rauschpegel des Rauschfüllteilbands, wo das Codierungsteilband liegt, entsprechend geregelt, und die rekonstruierten Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbänder werden erhalten.
-
Der detaillierte Prozess dieses Schritts ist in der folgenden Beschreibung von 5 zu finden.
-
Für die Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband, welchen Bits zugewiesen wurden, wird die Spektralbandreplikation durchgeführt, und der Energiepegel der Frequenzbereichskoeffizienten, die nach der Replikation erhalten wurden, und der Energiepegel der Rauschfüllung werden geregelt, und die Rauschfüllung wird für die Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband durchgeführt, welchen keine Bits zugewiesen wurden.
405: für die spektrumsrekonstruierten Frequenzbereichskoeffizienten wird die Inverse Modifizierte Diskrete Cosinus-Transformation (IMDCT) durchgeführt, um das endgültige Audio-Ausgangssignal zu erhalten.
-
Im Folgenden wird der Schritt 404 Bezug nehmend auf 5 im Detail beschrieben:
Wie in 5 gezeigt, umfasst der Schritt 404 spezifisch:
Schritt 501: für die Nullbit-Codierungsteilbänder des gültigen Rauschfüllteilbands wird die Spektralbandreplikation durchgeführt;
die Position eines bestimmten Tons des Audiosignals wird in den MDCT-Frequenzbereichskoeffizienten gesucht, und die Bandbreite vom Nullfrequenzpunkt zum Frequenzpunkt der Tonposition ist die Spektralbandreplikationsperiode, und das Frequenzsegment von einem Frequenzpunkt des Nullfrequenzpunkts, der copyband Offset-Frequenzpunkte rückwärts verschiebt, bis zu einem Frequenzpunkt der Tonposition, der copyband_offset-Frequenzpunkte rückwärts verschiebt, wird als das Quellfrequenzsegment genommen, und für die Nullbit-Codierungsteilbänder wird die Spektralbandreplikation durchgeführt. Wenn die höchste Frequenz im Nullbit-Codierungsteilband, das der Spektralbandreplikation bedarf, kleiner als die gesuchte Tonfrequenz ist, wendet dieser Frequenzpunkt nur die Rauschfüllung an, um die Spektrumsrekonstruktion durchzuführen.
-
Die Frequenzbereichskoeffizienten werden der Frequenz nach von niedrig zu hoch geordnet, und die Rückwärtsverschiebung ist eine Verschiebung zur hohen Frequenzposition bin.
-
Im Folgenden wird diese Spektralbandreplikationsmethode im Detail beschreiben:
- a. eine bestimmte Tonposition des Audiosignals wird in den MDCT-Frequenzbereichskoeffizienten gesucht;
die bevorzugte Methode, um in der vorliegenden Erfindung die Tonposition zu suchen, ist das Durchführen der Glättungsfilterung an den MDCT-Frequenzbereichskoeffizienten: das Nehmen des Absolutwerts oder Quadratwerts der MDCT-Frequenzbereichskoeffizienten für ein bestimmtes Frequenzsegment mit niedrigen Frequenzen, und das Durchführen der Glättungsfilterung; dem Ergebnis der Glättungsfilterung entsprechend, das Suchen der Position der maximalen Extremwerts der Filterungsausgaben, und die Position dieses maximalen Extremwerts wird dann als die Tonposition genommen;
Der Ton des Audiosignals in der vorliegenden Erfindung bezieht sich auf die Tonhöhe eines Audiosignals oder eine bestimmte Harmonische der Tonhöhe.
-
Das spezifische Frequenzsegment kann hierin ein bestimmtes Frequenzsegment sein, dessen Energie den Spektrumseigenschaften entsprechend stärker zentralisiert ist und als erstes Frequenzsegment bezeichnet wird. Und niedrige Frequenz bezieht sich hierin auf die Frequenzkomponenten, die weniger als die Hälfte der Gesamtbandbreite des Signals ausmachen.
-
Die Frequenzbereichskoeffizienten sind hierin die MDCT-Frequenzbereichskoeffizienten nach der Decodierung in Schritt 403, die der Frequenz nach von niedrig zu hoch geordnet sind.
-
Die Operationsformel des Nehmens des Absolutwerts der Frequenzbereichskoeffizienten dieses ersten Frequenzsegments zur Durchführung der Glättungsfilterung ist wie folgt: X_ampi(k) = μX_ampi-1(k) + (1 – μ)|X i(k)
-
Oder die Operationsformel des Nehmens des Quadratwerts der Frequenzbereichskoeffizienten des ersten Frequenzsegments zur Durchführung der Glättungsfilterung ist wie folgt: X_cmpi(k) = μX_ampi-1(k – 1) + (1 – μ)X i(k)2
-
Wobei μ ein Glättungsfilterungskoeffizient ist, dessen Wertebereich (0, 1) ist, und der Wert 0,125 sein kann. X_ampi(k) bezeichnet die Filterungsausgabe des k-ten Frequenzpunkts des i-ten Frames, und X i(k) sind die decodierten MDCT-Koeffizienten nach der Decodierung des k-ten Frequenzpunkts des i-ten Frames, und wenn i = 0, X_ampi-1(k) = 0.
-
Das Suchen nach der Position des maximalen Extremwerts der Filterungsausgaben des ersten Frequenzsegments kann auf zwei Weisen durchgeführt werden:
- (1) ein anfänglicher Maximalwert wird direkt aus den Filterungsausgaben der Frequenzbereichskoeffizienten gesucht, die dem ersten Frequenzsegment entsprechen, und dieser Maximalwert wird als der maximale Extremwert der Filterungsausgaben des ersten Frequenzsegments genommen, und die Sequenznummer des entsprechenden Frequenzpunkts wird als Position des maximalen Extremwerts (d. h., des Tons) genommen;
- (2) während der Suche nach dem maximalen Extremwert wird ein Segment in diesem ersten Frequenzsegment als das zweite Frequenzsegment genommen, und ein anfänglicher Maximalwert wird aus den Filterungsausgaben der Frequenzbereichskoeffizienten gesucht, die dem zweiten Frequenzsegment entsprechen, und dieser anfängliche Maximalwert wird als der maximale Extremwert der Filterungsausgaben des ersten Frequenzsegments genommen, und die Sequenznummer des entsprechenden Frequenzpunkts wird als die Position des maximalen Extremwerts (d. h., des Tons) genommen.
-
Die Startpunktposition des zweiten Frequenzsegments ist größer als der Startpunkt des ersten Frequenzsegments, und die Endpunktposition des zweiten Frequenzsegments ist kleiner als der Endpunkt des ersten Frequenzsegments, und bevorzugt ist die Zahl der Frequenzbereichskoeffizienten im ersten Frequenzsegment und im zweiten Frequenzsegment nicht kleiner als 8.
-
Um zu verhindern, dass der Frequenzbereichskoeffizient, der dem gesuchten anfänglichen Maximalwert entspricht, nicht die Tonposition des Audiosignals ist, wird während der Suche nach der Tonposition zuerst der anfängliche Maximalwert aus den Filterungsausgaben dieses zweiten Frequenzsegments gesucht, und je nach Position des Frequenzbereichskoeffizienten, der dem anfänglichen Maximalwert entspricht, werden verschiedene Prozesse durchgeführt:
- (a) wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des zweiten Frequenzsegments ist, wird diese Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des zweiten Frequenzsegments mit der Filterungsausgabe des Frequenzbereichskoeffizienten der früheren niedrigeren Frequenz im ersten Frequenzsegment verglichen und fortlaufend vorwärts verglichen, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des früherer Frequenzbereichskoeffizienten, und der aktuelle Frequenzbereichskoeffizient gilt als die Tonposition, das heißt, diese Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten ist der endgültig bestimmte maximale Extremwert, oder sie werden verglichen, bis die Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des ersten Frequenzsegments größer ist als die Filterungsausgabe des späteren Frequenzbereichskoeffizienten, und der Frequenzbereichskoeffizient der niedrigsten Frequenz des ersten Frequenzsegments gilt als die Tonposition, das heißt, die Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des ersten Frequenzsegments ist der endgültig bestimmte maximale Extremwert;
- (b) wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des zweiten Frequenzsegments ist, wird diese Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des zweiten Frequenzsegments mit der Filterungsausgabe des Frequenzbereichskoeffizienten der späteren höheren Frequenz im ersten Frequenzsegment verglichen und fortlaufend rückwärts verglichen, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des späteren Frequenzbereichskoeffizienten, und der aktuelle Frequenzbereichskoeffizient gilt als die Tonposition, das heißt, diese Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten ist der endgültig bestimmte maximale Extremwert, oder sie werden verglichen, bis die Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des ersten Frequenzsegments größer ist als die Filterungsausgabe des früheren Frequenzbereichskoeffizienten, und der Frequenzbereichskoeffizient der höchsten Frequenz des ersten Frequenzsegments gilt als die Tonposition, das heißt, die Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des ersten Frequenzsegments ist der endgültig bestimmte maximale Extremwert;
- (c) wenn dieser anfängliche Maximalwert die Filterungsausgabe eines Frequenzbereichskoeffizienten zwischen der niedrigsten Frequenz und der höchsten Frequenz im zweiten Frequenzsegment ist, ist der Frequenzbereichskoeffizient, der diesem anfänglichen Maximalwert entspricht, die Tonposition, das heißt, dieser anfängliche Maximalwert ist der endgültig bestimmte maximale Extremwert.
-
Im Folgenden wird die Methode zur Bestimmung der Audiosignalposition beschrieben, wobei als Beispiel genommen wird, dass die Frequenzbereichskoeffizienten des ersten Frequenzsegments die 24. bis 64. MDCT-Frequenzbereichskoeffizienten sind und die Frequenzbereichskoeffizienten des zweiten Frequenzsegments die 33. bis 56. MDCT-Frequenzbereichskoeffizienten sind:
Der Maximalwert wird aus den Filterungsausgaben der 33. bis 56. MDCT-Frequenzbereichskoeffizienten gesucht; wenn der Maximalwert dem 33. Frequenzbereichskoeffizienten entspricht, wird beurteilt, ob das erkannte Ausgabeergebnis des 32. Frequenzbereichskoeffizienten größer ist als das des 33. Frequenzbereichskoeffizienten, und wenn ja, wird der Vergleich vorwärts fortgesetzt, und es wird beurteilt, ob das erkannte Ausgabeergebnis des 31. Frequenzbereichskoeffizienten größer ist als das des 32. Frequenzbereichskoeffizienten, wobei auf diese Weise fortlaufend vorwärts verglichen wird, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die des früheren; oder bis gefunden wird, dass die Filterungsausgabe des 24. Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des 25. Frequenzbereichskoeffizienten, und dann ist der aktuelle Frequenzbereichskoeffizient oder der 24. Frequenzbereichskoeffizient die Tonposition.
-
Wenn der Maximalwert der 56. ist, wird eine entsprechende Methode angewandt, um fortlaufend rückwärts zu suchen, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die des späteren, und der aktuelle Frequenzbereichskoeffizient ist die Tonposition; oder bis gefunden wird, dass die Filterungsausgabe des 64. Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des 63. Frequenzbereichskoeffizienten, und dann ist der 64. Frequenzbereichskoeffizient die Tonposition.
-
Wenn der Maximalwert zwischen dem 33. und 56. liegt, ist der Frequenzbereichskoeffizient, der diesem Maximalwert entspricht, die Tonposition.
-
Dieser Positionswert wird als Tonal_pos bezeichnet, das heißt, die Sequenznummer des Frequenzpunkts, der dem maximalen Extremwert entspricht.
- b. die Bandbreite vom Nullfrequenzpunkt zum Frequenzpunkt der Tonposition wird als eine Periode genommen, das Frequenzsegment vom Nullfrequenzpunkt, der copyband_offset-Frequenzpunkte rückwärts verschiebt, bis zum Frequenzpunkt der Tonposition, der copyband_offset-Frequenzpunkte rckwärts verschiebt, wird als das Quellfrequenzsegment genommen, um die Spektralbandreplikation an den Nullbit-Codierungsteilbändern durchzuführen.
-
Das heißt, die Startsequenznummer des Frequenzpunkts des Quellfrequenzsegments ist copyband_offset, und die Endsequenznummer ist copyband_offset + Tonal_pos.
-
Bei der vorliegenden Erfindung ist der Wert des Spektralbadreplikationsversatzes (als copyband_offset bezeichnet) voreingestellt, und copyband_offset ≧ 0, und wenn der voreingestellte copyband_offset = 0, ist das Quellfrequenzsegment das Frequenzsegment vom Nullfrequenzpunkt zum Frequenzpunkt der Tonposition, und um Spektralsprünge des replizierten Spektralbands zu verringern, ist copyband_offset auf größer als null eingestellt, und dann ist das Quellfrequenzsegment der MDCT-Frequenzbereichskoeffizient des Frequenzsegments vom Nullfrequenzpunkt, der einen kleinen Bereich von Frequenzpunkten rückwärts verschiebt (als copyband_offset bezeichnet), bis zu einem Frequenzpunkt der Position des maximalen Extremwerts, der einen gleichen kleinen Bereich von Frequenzpunkten rückwärts verschiebt (als copyband_offset bezeichnet), und die Spektrumsfüllung des Nullbit-Codierungsteilbands im Inneren des gültigen Rauschfüllteilbands (zum Beispiel mit der Sequenznummer 1, 2, 3 und 4) oberhalb eines bestimmten Frequenzpunkts wird vom Quellfrequenzsegment repliziert; Dem Fluss von 2 entsprechend wenden die Nullbit-Codierungsteilbänder des ersten Rauschfüllteilbands das Verfahren der zufälligen Rauschfüllung an, um die Spektrumsrekonstruktion durchzuführen, und für die Nullbit-Codierungsteilbänder des Rauschfüllteilbands mit der Sequenznummer 1, 2, 3 und 4 wird das Verfahren der Frequenzbereichskoeffizientreplikation mit der Rauschfüllung kombiniert, um die Spektrumsrekonstruktion durchzuführen.
-
Bei der Durchführung der Spektralbandreplikation wird zuerst dem Quellfrequenzsegment und einer Startsequenznummer des Nullbit-Codierungsteilbands, das der Spektralbandreplikation bedarf, entsprechend eine Quellfrequenzsegment-Replikationsstartsequenznummer dieses Nullbit-Codierungsteilbands berechnet, und dann wird die Spektralbandreplikationsperiode als die Periode genommen und die Frequenzbereichskoeffizienten des Quellfrequenzsegments werden von der Quellfrequenzsegment-Replikationsstartsequenznummer an periodisch auf das Nullbit-Codierungsteilband repliziert.
-
Ein Verfahren zur Bestimmung der Quellfrequenzsegment-Replikationstartsequenznummer ist:
Zuerst wird, beginnend mit dem ersten Nullbit-Codierungsteilband, das der Replikation bedarf, die Sequenznummer des Frequenzpunkts des Start-MDCT-Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbands erhalten, deren Frequenzbereichskoeffizienten zu rekonstruieren sind und die als fillband_start_freq bezeichnet wird, die Sequenznummer des Frequenzpunkts, der dem Ton entspricht, wird als Tonal_pos bezeichnet, und die Replikationsperiode des Frequenzbands wird als copy_period bezeichnet. copy_period ist gleich Tonal_pos plus 1. Wenn die höchste Frequenz im Inneren des Nullbit-Codierungsteilbands, das der Spektralbandreplikation bedarf, kleiner ist als die gesuchte Tonfrequenz, dann wendet dieser Frequenzpunkt zur Durchführung der Spektrumsrekonstruktion nur die Rauschfüllung an, ohne die Spektralbandreplikation durchzuführen. Und der Spektralbandreplikationsversatz wird als copyband_offset bezeichnet, und der Wert von fillband_start_freq wird rekursiv von copy_period subtrahiert, bis der Wert im Wertebereich der Sequenznummer des Quellfrequenzsegments liegt, und dieser Wert ist die Quellfrequenzsegment-Replikationsstartsequenznummer, die als copy_pos_mod bezeichnet wird.
-
Die Quellfrequenzsegment-Replikationsstartsequenznummer copy_pos_mod kann durch den folgenden Pseudocode-Algorithmus erhalten werden:
-
Nach Abschluss der Operation ist copy_pos_mod die Quellfrequenzsegment-Replikationsstartsequenznummer.
-
Während der Replikation werden die Frequenzbereichskoeffizienten von der Quellfrequenzsegment-Replikationsstartsequenznummer an rückwärts fortlaufend auf das Nullbit-Codierungsteilband repliziert, wobei fillband_start_freq als die Startposition genommen wird, bis der Frequenzpunkt der Quellfrequenzsegmentreplikation einen Frequenzpunkt von Tonal_pos + copyband_offset erreicht, und die Frequenzbereichskoeffizienten werden vom copyband_offset-Frequenzpunkt an kontinuierlich rückwärts auf das Nullbit-Codierungsteilband weiterrepliziert usw., und der Rest kann durch Analogie abgeleitet werden, bis die Spektralbandreplikation aller Frequenzbereichskoeffizienten im aktuellen Nullbit-Codierungsteilbands abgeschlossen ist.
-
Wenn der Spektralbandreplikationsversatz copyband_offset auf 10 eingestellt ist, wird das Frequenzband beginnend mit copy_pos_mod von fillband_start_freq an in einer Reihenfolge von der niedrigen Frequenz zur hohen Frequenz auf das Nullbit-Codierungsteilband repliziert, bis nach dem Frequenzpunkt Tonal_pos + 10 die Replikation vom 10. Frequenzbereichskoeffizienten an erneut gestartet wird, und der Rest kann durch Analogie abgeleitet werden, und alle Signale dieses Nullbit-Codierungsteilbands werden vom 10. bis zum Tonal_pos + 10 Frequenzbereichskoeffizienten repliziert, und die Frequenzbereichskoeffizienten von den Frequenzpunkten 10 bis Tonal_pos + 10 sind das Quellfrequenzsegment der Spektralbandreplikation.
-
Durch das obige Verfahren wird das Spektrum für all die Nullbit-Codierungsteilbänder der Rauschfüllteilbänder der Sequenznummern 1, 2, 3 und 4 repliziert.
-
Neben dem obigen Verfahren der Spektralbandreplikation sind andere Verfahren zur Spektralbandreplikation für die vorliegende Erfindung verfügbar, was die Implementierung der vorliegenden Erfindung nicht beeinflusst.
Schritt 502: dem decodierten Rauschpegel entsprechend wird die Energieanpassung für die Frequenzbereichskoeffizienten durchgeführt, die nach der Replikation der Nullbit-Codierungsteilbänder in jedem Rauschfüllteilband erhalten wurden.
-
Die Amplitudenhüllkurve der Frequenzbereichskoeffizienten, die nach der Replikation der Nullbit-Codierungsteilbänder erhalten wurden, wird berechnet und als sbr_rms(r) bezeichnet.
-
Die Berechnungsformel der Frequenzbereichskoeffizienten nach der Energieanpassung ist: X_sbr(r) = X_sbr(r)·sbr_lev_scale(r)·rms(r)/sbr_rms(r);
-
Wobei
X_sbr (r) die Frequenzbereichskoeffizienten nach der Energieanpassung des Nullbit-Codierungsteilbands r bezeichnet, X_sbr(r) die Frequenzbereichskoeffizienten bezeichnet, der nach der Replikation des Nullbit-Codierungsteilbands r erhalten wurden, sbr_rms(r) die Amplitudenhüllkurve (d. h., ihren quadratischen Mittelwert) der Frequenzbereichskoeffizienten X_sbr(r) ist, die nach der Replikation des Nullbit-Codierungsteilbands r erhalten wurden, rms(r) die Amplitudenhüllkurve der Frequenzbereichskoeffizienten vor dem Codieren des Nullbit-Codierungsteilbands r ist, die durch Inversquantisierung des quantitativen Index der Amplitudenhüllkurve erhalten wird, und sbr_lev_scale(r) ein Energie-Skalierfaktor der Spektralbandreplikation des Nullbit-Codierungsteilbands r ist, dessen Wert durch den Rauschpegel des Rauschfüllteilbands bestimmt wird, wo das Nullbit-Codierungsteilband r liegt, und die spezifische Berechnungsformel wie folgt ist:
-
fill_energy_saclefactor ist der Füllenergie-Skalierfaktor, der zur Anpassung des Gewinns der Gesamtfüllenergie verwendet wird, und der Wertebereich ist (0, 1), und der Wert ist 0,2 in diesem Beispiel. P_noise_rate(j) ist der Rauschpegel des Rauschfüllteilbands j, der durch Decodieren und Inversquantisieren erhalten wird und dessen Inversquantisierungswert den rauschpegelcodierten Bits entsprechend dem Quantisierungsbereich in Tabelle 3 entnommen werden kann. Ein Implementierungsbeispiel in diesem Beispiel wird in Tabelle 10 gezeigt: Tabelle 10: Inversquantisierungswerte des Rauschpegels
P_noise_rate_bits(j) | P_noise_rate(j) |
00 | 0,04 |
01 | 0,08 |
10 | 0,15 |
11 | 0,30 |
-
Wobei j die Sequenznummer des Rauschfüllteilbands ist, wo das Nullbit-Codierungsteilband r liegt.
Schritt 503: die Frequenzbereichskoeffizienten nach der Energieanpassung werden durch das Weißrauschen addiert, um die endgültig rekonstruierten Frequenzbereichskoeffizienten zu erzeugen.
-
Nach Abschluss der Energieanpassung der replizierten Frequenzbereichskoeffizienten werden die Frequenzbereichskoeffizienten nach der Energieanpassung durch das Weißrauschen addiert, um den endgültig rekonstruierten Frequenzbereichskoeffizienten X zu erzeugen: X(r) = X_sbr(r) + rms(r)·noise_lev_scale(r)·random();
-
Wobei X (r) den rekonstruierten Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbands r bezeichnet, X_sbr (r) den energieangepassten Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbands r bezeichnet, rms(r) die Amplitudenhüllkurve der Frequenzbereichskoeffizienten vor dem Codieren des Nullbit-Codierungsteilbands r, die durch Inversquantisierung des quantitativen Index der Amplitudenhüllkurve erhalten wird, random() der Zufallsphasengenerator ist, der Zufallsphasenwerte generiert und +1 oder –1 zurückgibt, und noise_lev_scale(r) der Rauschpegel-Skalierfaktor ist, dessen Wert durch den Rauschpegel des Rauschfüllteilbands bestimmt wird, wo das Nullbit-Codierungsteilband r liegt.
-
Und die spezifische Operationsformel ist wie folgt:
-
Wobei fill_energy_saclefactor der Füllenergie-Skalierfaktor ist, der zur Anpassung des Gewinns der Gesamtfüllenergie verwendet wird, und der Wertebereich (0, 1) ist, und der Wert in diesem Beispiel 0,2 ist. P_noise_rate (j) ist der Rauschpegel des Rauschfüllteilbands j, der durch Decodieren und Inversquantisieren erhalten wird, wobei j die Sequenznummer des Rauschfüllteilbands ist, wo das Nullbit-Codierungsteilband r liegt.
-
Für die Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband, welchen keine Bits zugewiesen werden (zum Beispiel das Rauschfüllteilband mit der Sequenznummer 0) muss natürlich die Weißrauschfüllung durchgeführt werden, um die Rekonstruktion der Frequenzbereichskoeffizienten zu implementieren, und hier wird nicht näher darauf eingegangen.
-
Die vorliegende Erfindung stellt auch ein Verfahren zur Schätzung eines Rauschpegels bereit, und dieses Verfahren umfasst:
das Schätzen eines Leistungsspektrums eines zu codierenden Audiosignals den Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend;
das Schätzen eines Rauschpegels eines Nullbit-Codierungsteilband-Audiosignals dem geschätzten Leistungsspektrum entsprechend, und dieser Rauschpegel ist vorgesehen, um beim Decodieren ein Energieverhältnis der Rauschfüllung zur Spektralbandreplikation zu regeln; wobei ein Nullbit-Codierungsteilband sich auf ein Codierungsteilband bezieht, dessen zugewiesene Bitzahl null ist. Ein Rauschpegel kann für jedes Nullbit-Codierungsteilband berechnet werden, und mit einer Vielzahl von Rauschteilbändern kann auch ein gemeinsamer Rauschpegel berechnet werden.
-
Bevorzugt bezieht sich der Rauschpegel des Nullbit-Codierungsteilband-Audiosignals auf ein Verhältnis der geschätzten Rauschkomponentenleistung im Nullbit-Codierungsteilband zur geschätzten Tonkomponentenleistung im Nullbit-Codierungsteilband.
-
Bevorzugt wird das Leistungsspektrum des zu codierenden Audiosignals den MDCT-Frequenzbereichskoeffzienten des zu codierenden Audiosignals entsprechend geschätzt, und die Formel zur Leistungsschätzung des Frequenzpunkts k des i-ten Frames ist wie folgt:
Pi(k) = λPi-1(k) + (1 – λ)Xi(k)2 wobei, wenn i gleich 0, Pi-1(k) = 0; und Pi(k) den geschätzten Leistungswert im k-ten Frequenzpunkt des i-ten Frames bezeichnet, und Xi(k) die MDCT-Koeffizienten im k-ten Frequenzpunkt des i-ten Rahmens bezeichnet, und λ der Filterungskoeffizient des unipolaren Glättungsfilters ist.
-
Bevorzugt werden die Frequenzbereichskoeffizienten des zu codierenden Audiosignals in ein oder mehrere Rauschfüllteilbänder aufgeteilt, und der Prozess, um den Rauschpegel eines bestimmten gültigen Rauschfüllteilbands dem geschätzten Leistungsspektrum des zu codierenden Audiosignals entsprechend zu berechnen, umfasst insbesondere:
das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband, um eine Durchschnittsleistung P_aveg(j) zu erhalten;
das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten, deren Leistungen Pi(K) größer als die Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband sind, um die Tonkomponenten-Durchschnittsleistung P_signal_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten;
das Berechnen eines Durchschnittswerts der Leistungen Pi(k) aller Frequenzbereichskoeffizienten, deren Leistungen Pi(k) kleiner oder gleich der Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband sind, um die Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten; und
das Berechnen eines Verhältnisses P_noise_rate(j) der Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) zur Tonkomponenten-Durchschnittsleistung P_signal_aveg(j), um den Rauschpegel dieses gültigen Rauschfüllteilbands zu erhalten.
-
Wobei das gültige Rauschfüllteilband sich auf das Rauschfüllteilband mit Nullbit-Codierungsteilbändern bezieht.
-
3. Das Codierungssystem
-
Um das obige technische Problem zu lösen, stellt die vorliegende Erfindung auch ein System zur Audiocodierung bereit, und wie in 6 gezeigt, umfasst dieses System: eine Modifizierte Diskrete Cosinus-Transformation (MDCT)-Einheit, eine Amplitudenhüllkurven-Berechnungseinheit, eine Amplitudenhüllkurven-Quantisierungs- und Codiereinheit, eine Bitzuweisungseinheit, eine Frequenzbereichskoeffizienten-Codiereinheit, eine Rauschpegel-Schätzeinheit und einen Bitstrom-Multiplexer (MUX), wobei
die MDCT-Einheit vorgesehen ist, um die inverse Modifizierte Diskrete Cosinus-Transformation durchzuführen, um Frequenzbereichskoeffizienten für das Audiosignal zu transformieren und zu erzeugen;
die Amplitudenhüllkurven-Berechnungseinheit, die mit der MDCT-Einheit verbunden ist, vorgesehen ist, um die durch MDCT erzeugten Frequenzbereichskoeffizienten in eine Vielzahl von Codierungsteilbändern aufzuteilen und die Amplitudenhüllkurve jedes Codierungsteilbands zu berechnen;
wenn die Amplitudenhüllkurven-Berechnungseinheit die Frequenzbereichskoeffizienten in Codierungsteilbänder aufteilt, werden diese MDCT-transformierten Frequenzbereichskoeffizienten in eine Vielzahl von Codierungsteilbänder mit einheitlichen Intervallen aufgeteilt, oder sie werden den auditiven Wahrnehmungseigenschaften entsprechend in eine Vielzahl von uneinheitlichen Codierungsteilbändern aufgeteilt;
die Amplitudenhüllkurven-Quantisierungs- und Codiereinheit, die mit der Amplitudenhüllkurven-Berechnungseinheit verbunden ist, vorgesehen ist, um die Quantisierung und Codierung des Amplitudenhüllkurvenwerts jedes Codierungsteilbands durchzuführen, um die amplitudenhüllkurvencodierten Bits jedes Codierungsteilbands zu erzeugen;
die Bitzuweisungseinheit, die mit der Amplitudenhüllkurven-Decodiereinheit verbunden ist, zur Durchführung der Bitzuweisung vorgesehen ist, um die codierte Bitzahl zu erhalten, die jedem Frequenzbereichskoeffizienten in jedem Codierungsteilband zugewiesen wird.
-
Insbesondere umfasst die Bitzuweisungseinheit ein Signifikanz-Berechnungsmodul und ein Bitzuweisungsmodul, die miteinander verbunden sind, wobei:
das Signifikanz-Berechnungsmodul vorgesehen ist, um den Anfangswert der Signifikanz jedes Codierungsteilbands den Amplitudenhüllkurvenwerten des Codierungsteilbands entsprechend zu berechnen;
das Bitzuweisungsmodul vorgesehen ist, um die Bitzuweisung an jedem Frequenzbereichskoeffizienten in den Codierungsteilbändern der Signifikanz jedes Codierungsteilbands entsprechend durchzuführen, und während des Bitzuweisungsprozesses sind die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung variabel.
-
Der Anfangswert der Signifikanz wird dem optimalen Bitwert im Zustand der maximalen Quantisierung des Signal-Rausch-Verhältnis-Gewinns entsprechend und mit dem für die Wahrnehmungseigenschaften des menschlichen Gehörs geeigneten Skalierfaktor berechnet, oder dem quantitativen Index Thq(j) der Amplitudenhüllkurve jedes Codierungsteilbands oder ⌊μ × log2[Th(j)] + ν⌋ entsprechend, wobei μ > 0 und μ und v beide reelle Zahlen sind.
-
Wenn das Signifikanz-Berechnungsmodul den Anfangswert der Signifikanz berechnet, berechnet das Signifikanz-Berechnungsmodul zuerst einen Durchschnittswert für den Bitverbrauch eines einzelnen Frequenzbereichskoeffizienten; und dann berechnet es einen optimalen Bitwert im Zustand der maximalen Quantisierung des Signal-Rausch-Verhältnis-Gewinns der Code Rate Distortion-Theorie entsprechend; danach berechnet es den Anfangswert der Signifikanz in der Bitzuweisung jedes Codierungsteilbands dem Durchschnittswert des Bitverbrauchs und dem optimalen Bitwert entsprechend;
das Bitzuweisungsmodul führt die Bitzuweisung an jedem Codierungsteilband der Signifikanz jedes Codierungsteilbands entsprechend durch: die codierte Bitzahl jedes Frequenzbereichskoeffizienten im Codierungsteilband mit der maximalen Signifikanz wird erhöht und die Signifikanz dieses Codierungsteilbands wird reduziert, bis die Summe der verbrauchten Bitzahl aller Codierungsteilbänder den Maximalwert im Zustand der verfügbaren Bitbegrenzung erfüllt.
-
Wenn das Bitzuweisungsmodul die Bitzuweisung durchführt, sind die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung des Codierungsteilbands mit niederwertigen Bits größer als die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung des Nullbit-Codierungsteilbands und des Codierungsteilbands mit höherwertigen Bits. Zum Beispiel sind die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung des Codierungsteilbands mit niederwertigen Bits beide 0,5, wenn das Bitzuweisungsmodul die Bitzuweisung durchführt; und die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung des Nullbit-Codierungsteilbands und des Codierungsteilbands mit höherwertigen Bits sind 1.
-
Die Frequenzbereichskoeffizienten-Quantisierungs- und Codiereinheit, die mit der MDCT-Einheit, der Bitzuweisungseinheit und der Amplitudenhüllkurven-Quantisierungs- und Codiereinheit verbunden ist, ist vorgesehen, um die Normalisierungs-, Quantisierungs- und Codierungsprozesse an allen Frequenzbereichskoeffizienten in jedem Codierungsteilband durchzuführen, um die frequenzbereichskoeffizientencodierten Bits zu erzeugen.
-
Die Rauschpegel-Schätzeinheit, die mit der MDCT-Einheit und der Bitzuweisungseinheit verbunden ist, ist vorgesehen, um das Leistungsspektrum des zu codierenden Audiosignals den MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend zu schätzen und ferner den Rauschpegel des Nullbit-Codierungsteilband-Audiosignals zu schätzen, zu quantisieren und zu codieren, um die rauschpegelcodierten Bits zu erhalten; wobei dieser Rauschpegel verwendet wird, um beim Decodieren das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation zu regeln, wie in 7 gezeigt.
-
Der Rauschpegel des Nullbit-Codierungsteilband-Audiosignals bezieht sich auf das Verhältnis der geschätzten Rauschkomponentenleistung in den Nullbit-Codierungsteilbändern zur geschätzten Tonkomponentenleistung in den Nullbit-Codierungsteilbändern.
-
Der Bitstrom-Multiplexer (MUX), der mit der Amplitudenhüllkurven-Berechnungseinheit, der Frequenzbereichskoeffizienten-Quantisierungs- und Codiereinheit und der Rauschpegel-Schätzeinheit verbunden ist, ist vorgesehen, um die codierten Bits jedes Codierungsteilbands und die frequenzbereichskoeffizientencodierten Bits und die rauschpegelcodierten Bits zu multiplexen und an das Decodierungsende zu senden.
-
Die Sequenz des Multiplexens und Packens der codierten Bits durch den Bitstrom-Multiplexer ist aufeinanderfolgend das Amplitudenhüllkurve-Huffman-Codierungsflag, das Frequenzbereichskoeffizienten-Huffman-Codierungsflag, die Iterationshäufigkeit der Bitzuweisung und -modifikation, die amplitudenhüllkurvencodierten Bits, frequenzbereichskoeffizientencodierten Bits und die rauschpegelcodierten Bits.
-
Wie in 7 gezeigt, umfasst die Rauschpegel-Schätzeinheit insbesondere:
Ein Leistungsspektrum-Schätzmodul, das vorgesehen ist, um das Leistungsspektrum des zu codierenden Audiosignals den MDCT-Frequenzbereichskoeffizienten des zu codierenden Audiosignals entsprechend zu schätzen;
wobei das Leistungsspektrum-Schätzmodul die folgende Formel anwendet, um die Leistung des Frequenzpunkts k des i-ten Frames zu schätzen:
Pi(k) = λPi-1(k) + (1 – λ)Xi(k)2, wobei, wenn i gleich 0, Pi-1(k) = 0; und Pi(k) den geschätzten Leistungswert des k-ten Frequenzpunkts des i-ten Frames bezeichnet, und Xi(k) die MDCT-Koeffizienten des k-ten Frequenzpunkts des i-ten Rahmens bezeichnet, und λ der Filterungskoeffizient des unipolaren Glättungsfilters Ist;
ein Rauschpegel-Berechnungsmodul, das mit dem Leistungsspektrum-Schätzmodul verbunden ist und vorgesehen ist, um den Rauschpegel des Audiosignal-Rauschfüllteilbands, welchem Bits zugewiesen wurden, dem vom Leistungsspektrum-Schätzmodul geschätzten Leistungsspektrum entsprechend zu schätzen; und
ein Rauschpegel-Codierungsmodul, das mit dem Rauschpegel-Berechnungsmodul verbunden ist und vorgesehen ist, um die Quantisierung und Codierung des vom Rauschpegel-Berechnungsmodul berechneten Rauschpegels durchzuführen, um die rauschpegelcodierten Bits zu erhalten.
-
Bevorzugt werden die Frequenzbereichskoeffizienten des zu codierenden Audiosignals in ein oder mehrere Rauschfüllteilbänder aufgeteilt, und die Funktion des Rauschpegel-Berechnungsmoduls umfasst: das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten aller oder eines Teils der Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband, um eine Durchschnittsleistung P_aveg(j) zu erhalten; das Berechnen eines Durchschnittswerts der Leistungen aller Frequenzbereichskoeffizienten aller oder eines Teils der Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband, deren Leistungen Pi(k) größer als die Durchschnittsleistung P_aveg(j) aller oder eines Teils der Nullbit-Codierungsteilbänder im gültigen Rauschfüllteilband sind, um eine Tonkomponenten-Durchschnittsleistung P_signal_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten; das Berechnen eines Durchschnittswerts der Leistungen Pi(k) aller Frequenzbereichskoeffizienten, deren Leistungen Pi(k) kleiner oder gleich der Durchschnittsleistung P_aveg(j) alter oder eines Teils der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband sind, um eine Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) der Nullbit-Codierungsteilbänder in diesem gültigen Rauschfüllteilband zu erhalten; und das Berechnen eines Verhältnisses der Rauschkomponenten-Durchschnittsleistung P_noise_aveg(j) zur Tonkomponenten-Durchschnittsleistung P_signal_aveg(j), um den Rauschpegel dieses gültigen Rauschfüllteilbands zu erhalten;
wobei das gültige Rauschfüllteilband sich auf das Rauschfüllteilband mit den Nullbit-Codierungsteilbändern bezieht.
-
Bevorzugt umfasst die Rauschpegel-Schätzeinheit auch ein Bitzuweisungsmodul, das mit dem Rauschpegel-Berechnungsmodul und dem Rauschpegel-Codierungsmodul verbunden ist, und das Bitzuweisungsmodul ist vorgesehen, um allen gültigen Rauschfüllteilbändern Bits zuzuweisen oder ein oder mehrere gültige Rauschfüllteilbänder mit niedrigen Frequenzen zu überspringen und nachfolgenden gültigen Rauschfüllteilbändern mit höheren Frequenzen Bits zuzuweisen und dies dem Rauschpegel-Berechnungsmodul und dem Rauschpegel-Codierungsmodul zu melden; das Rauschpegel-Berechnungsmodul berechnet den Rauschpegel nur für die Rauschfüllteilbänder, denen Bits zugewiesen wurden; und das Rauschpegel-Codierungsmodul verwendet die Bits, die vom Bitzuweisungsmodul zugewiesen wurden, um die Quantisierung und Codierung an diesem Rauschpegel durchzuführen.
-
4. Das Decodierungssystem
-
Um das obige Decodierverfahren zu implementieren, stellt die vorliegende Erfindung auch ein System zur Audiodecodierung bereit, und wie in 8 gezeigt, umfasst dieses System: einen Bitstrom-Demultiplexer (DeMUX), eine Amplitudenhüllkurven-Decodiereinheit, eine Bitzuweisungseinheit, eine Frequenzbereichskoeffzienten-Decodiereinheit, eine Spektrumsrekonstruktionseinheit und eine inverse Modifizierte Diskrete Cosinus-Transformation(IMDCT)-Einheit, wobei:
der Bitstrom-Demultiplexer (DeMUX) vorgesehen ist, um die amplitudenhüllkurvencodierten Bits, frequenzbereichskoeffizientencodierten Bits und rauschpegelcodierten Bits aus dem zu decodierenden Bitstrom zu trennen;
die Amplitudenhüllkurven-Decodiereinheit, die mit dem Bitstrom-Demultiplexer verbunden ist, vorgesehen ist, um die vom Bitstrom-Demultiplexer ausgegebenen amplitudenhüllkurvencodierten Bits zu decodieren, um den quantitativen Index der Amplitudenhüllkurve jedes Codierungsteilbands zu erhalten;
die Bitzuweisungseinheit, die mit der Amplitudenhüllkurven-Decodiereinheit verbunden ist, vorgesehen ist, um jedem Codierungsteilband Bits zuzuweisen und den Rauschfüllteilbändern, die Nullbit-Codierungsteilbänder enthalten, Bits zuzuweisen.
-
Die Bitzuweisungseinheit umfasst: das Signifikanz-Berechnungsmodul, das Bitzuweisungsmodul und das Bitzuweisungs- und -modifikationsmodul, wobei:
Das Signifikanz-Berechnungsmodul vorgesehen ist, um den Anfangswert der Signifikanz jedes Codierungsteilbands den Amplitudenhüllkurvenwerten des Codierungsteilbands entsprechend zu berechnen;
das Bitzuweisungsmodul vorgesehen ist, um die Bitzuweisung für jeden Frequenzbereichskoeffizienten in den Codierungsteilbändern dem Anfangswert der Signifikanz jedes Codierungsteilbands entsprechend durchzuführen, und während des Bitzuweisungsprozesses sind die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung variabel;
das Bitzuweisungs- und -modifikationsmodul vorgesehen ist, um nach der Durchführung der Bitzuweisung den Zählwert count der Iterationshäufigkeit und die Signifikanz jedes Codierungsteilbands der Bitzuweisung des Codierungsendes entsprechend zu modifizieren und die Bitzuweisung und -modifikation dann count mal am Codierungsteilband durchzuführen.
-
Wenn das Bitzuweisungsmodul die Bitzuweisung durchführt, sind die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung der Codierungsteilbänder mit niederwertigen Bits größer als die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung der Nullbit-Codierungsteilbänder und der Codierungsteilbänder mit höherwertigen Bits.
-
Wenn das Bitzuweisungs- und -modifikationsmodul die Bitmodifikation durchführt, sind die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung der Codierungsteilbänder mit niederwertigen Bits kleiner als die Bitzuweisungsschrittweite und die signifikanzreduzierte Schrittweite nach der Bitzuweisung der Nullbit-Codierungsteilbänder und der Codierungsteilbänder mit höherwertigen Bits.
-
Wenn die Bitzuweisungseinheit dem Rauschfüllteilband Bits zuweist, weist die Bitzuweisungseinheit dem Zuweisungsverfahren des Codierers entsprechend allen gültigen Rauschfüllteilbändern Bits zu oder überspringt ein oder mehrere gültige Rauschfüllteilbänder mit niedrigen Frequenzen und weist nachfolgenden gültigen Rauschfüllteilbändern mit höheren Frequenzen Bits zu.
-
Die Frequenzbereichskoeffizienten-Decodiereinheit, die mit der Amplitudenhüllkurven-Decodiereinheit und der Bitzuweisungseinheit verbunden ist, ist vorgesehen, um die Decodierung, Inversquantisierung und Inversnormalisierung an den Codierungsteilbändern durchzuführen, um die Frequenzbereichskoeffizienten zu erhalten;
die Rauschpegel-Decodiereinheit, die mit dem Bitstrom-Demultiplexer und der Bitzuweisungseinheit verbunden ist, ist vorgesehen, um die Decodierung und Inversquantisierung für die rauschpegelcodierten Bits durchzuführen, um den Rauschpegel zu erhalten;
die Spektrumsrekonstruktionseinheit, die mit der Rauschpegel-Decodiereinheit, der Frequenzbereichskoeffizienten-Decodiereinheit, der Amplitudenhüllkurven-Decodiereinheit und der Bitzuweisungseinheit verbunden ist, ist vorgesehen, um die Spektralbandreplikation am Nullbit-Codierungsteilband durchzuführen, den Gesamtenergiefüllpegel dieses Codierungsteilbands der Amplitudenhüllkurve, die von der Amplitudenhüllkurven-Decodiereinheit ausgegeben wurde, entsprechend zu regeln, und das Energieverhältnis der Rauschfüllung zur Spektralbandreplikation dem Rauschpegel, der von der Rauschpegel-Decodiereinheit ausgegeben wurde, entsprechend zu regeln und die rekonstruierten Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbands zu erhalten.
-
Die Inverse Modifizierte Diskrete Cosinus-Transformation(IMDCT)-Einheit, die mit der Spektrumsrekonstruktionseinheit verbunden ist, ist vorgesehen, um die IMDCT an den Frequenzbereichskoeffizienten nach Abschluss der Spektrumsrekonstruktion der Nullbit-Codierungsteilbänder durchzuführen, um ein Audiosignal zu erhalten.
-
Wie in 9 gezeigt, umfasst die Spektrumsrekonstruktionseinheit insbesondere eine Spektralbandreplikationsuntereinheit, eine Energieanpassungsuntereinheit und eine Rauschfülluntereinheit, die in Reihe geschaltet sind, wobei:
die Spektralbandreplikationsuntereinheit vorgesehen ist, um die Spektralbandreplikation an den Nullbit-Codierungsteilbändern durchzuführen;
die Energieanpassungsuntereinheit vorgesehen ist, um die Amplitudenhüllkurve der Frequenzbereichskoeffizienten zu berechnen, die nach der Spektralbandreplikation des Nullbit-Codierungsteilbands erhalten wurden, und sie als sbr_rms(r) auszugeben; und um die Energieanpassung an den Frequenzbereichskoeffizienten, die nach der Replikation erhalten wurden, dem von der Rauschpegel-Decodiereinheit ausgegebenen Rauschpegel entsprechend durchzuführen, wobei die Formel der Energieanpassung wie folgt ist: X_sbr(r) = X_sbr(r)·sbr_]ev_scale(r)·rms(r)/sbr_rms(r).
-
Wobei
X_sbr (r) die Frequenzbereichskoeffizienten nach der Energieanpassung des Nullbit-Codierungsteilbands r bezeichnet, X_sbr(r) die Frequenzbereichskoeffizienten nach der Replikation des Nullbit-Codierungsteilbands r bezeichnet, sbr_rms(r) die Amplitudenhüllkurve der Frequenzbereichskoeffizienten X_sbr(r) ist, die nach der Replikation des Nullbit-Codierungsteilbands r erhalten wurden, rms(r) die Amplitudenhüllkurve der Frequenzbereichskoeffizienten vor dem Codieren des Nullbit-Codierungsteilbands r ist, die durch Inversquantisierung des quantitativen Index der Amplitudenhüllkurve erhalten wird, und sbr_lev_scale(r) der Energie-Skalierfaktor der Spektralbandreplikation des Nullbit-Codierungsteilbands r ist, dessen Wert durch den Rauschpegel des Rauschfüllteilbands bestimmt wird, wo das Nullbit-Codierungsteilband r liegt, und die spezifische Berechnungsformel wie folgt ist:
wobei fill_energy_saclefactor der Füllenergie-Skalierungsfaktor zur Anpassung des Gewinns der Gesamtfüllenergie ist, dessen Wertebereich (0, 1) ist, und
P_noise_rate (j) der Rauschpegel des Rauschfüllteilbands j ist, der durch Decodieren und Inversquantisieren erhalten wird, wobei j die Sequenznummer des Rauschfüllteilbands ist, wo das Nullbit-Codierungsteilband r liegt.
-
Die Rauschfülluntereinheit ist vorgesehen, um die Rauschfüllung an den Frequenzbereichskoeffizienten nach der Energieanpassung dem von der Rauschpegel-Decodiereinheit ausgegebenen Rauschpegel entsprechend durchzuführen, wobei die Rauschfüllformel wie folgt ist: X(r) = X_sbr(r) + rms(r)·noise_lev_scale(r)·random();
-
Wobei
X (r) den rekonstruierten Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbands r bezeichnet,
X_sbr (r) den energieangepassten Frequenzbereichskoeffizienten des Nullbit-Codierungsteilbands r bezeichnet, rms(r) die Amplitudenhüllkurve des Frequenzbereichskoeffizienten vor dem Codieren des Nullbit-Codierungsteilbands r ist, die durch Inversquantisierung des quantitativen Index der Amplitudenhüllkurve erhalten wird, random() der Zufallsphasengenerator ist, der die Zufallsphasenwerte generiert und +1 oder –1 zurückgibt, und noise_lev_scale(r) der Rauschpegel-Skalierfaktor ist, dessen Wert durch den Rauschpegel des Rauschfüllteilbands bestimmt wird, wo das Nullbit-Codierungsteilband r liegt, und die spezifische Operationsformel wie folgt ist:
-
Wobei fill_energy_saclefactor der Füllenergie-Skalierfaktor ist, der zur Anpassung des Gewinns der Gesamtfüllenergie verwendet wird, der Wertebereich (0, 1) ist und der Wert in diesem Beispiel 0,2 ist. P_noise_rate (j) ist der Rauschpegel des Rauschfüllteilbands j, der durch Decodieren und Inversquantisieren erhalten wird, wobei j die Sequenznummer des Rauschfüllteilbands, wo das Nullbit-Codierungsteilband r liegt.
-
Die Spektralbandreplikationsuntereinheit führt die Spektralbandreplikation an den Nullbit-Codierungsteilbändern im Rauschfüllteilband durch, welchen dem Bitzuweisungsergebnis der Bitzuweisungseinheit entsprechend Bits zugewiesen wurden; die Energieanpassungsuntereinheit führt die Energieanpassung an den Frequenzbereichskoeffizienten durch, die nach der Spektralbandreplikation erhalten wurden; und die Rauschfülluntereinheit führt die Rauschfüllung an den Frequenzbereichskoeffizienten nach der Energieanpassung und an den Nullbit-Codierungsteilbändern des Rauschfüllteilbands durch, welchem keine Bits zugewiesen wurden.
-
Bevorzugt umfasst die Spektralbandreplikationsuntereinheit, wie in 9 gezeigt: ein Tonpositionssuchmodul, ein Perioden- und Quellfrequenzsegment-Berechnungsmodul, ein Quellfrequenzsegment-Replikationsstartsequenznummer-Berechnungsmodul und ein Spektralbandreplikationsmodul, die in Reihe geschaltet sind, wobei:
das Tonpositionssuchmodul vorgesehen ist, um in den MDCT-Frequenzbereichskoeffizienten die Position eines bestimmten Tons eines Audiosignals zu suchen, und insbesondere umfasst: das Nehmen der Absolutwerte oder Quadratwerte der MDCT-Frequenzbereichskoeffizienten des ersten Frequenzsegments und das Durchführen der Glättungsfilterung; einem Ergebnis der Glättungsfilterung entsprechend, das Suchen nach einer Position eines maximalen Extremwerts der Filterungsausgabe des ersten Frequenzsegments, und die Position dieses maximalen Extremwerts wird als die Tonposition genommen;
das Perioden- und Quellfrequenzsegment-Berechnungsmodul vorgesehen ist, um der Tonposition entsprechend eine Spektralbandreplikationsperiode und ein Quellfrequenzsegment zu bestimmen, und diese Spektralbandreplikationsperiode ist die Bandbreite vom Nullfrequenzpunkt zu einem Frequenzpunkt der Tonposition, und dieses Quellfrequenzsegment ist das Frequenzsegment vom Frequenzpunkt des Nullfrequenzpunkts, der copyband_offset-Frequenzpunkte rückwärts verschiebt, bis zum Frequenzpunkt der Tonposition, der die copyband_offset-Frequenzpunkte rückwärts verschiebt.
-
Wenn die Sequenznummer des Frequenzpunkts der Tonposition als Tonal_pos bezeichnet wird und der voreingestellte Spektralbandreplikationsversatz als copyband_offset bezeichnet wird, dann ist die Startsequenznummer des Frequenzbereichskoeffizienten des Quellfrequenzsegments copyband Offset, und die Endsequenznummer ist copyband_offset + Tonal_pos.
-
Das Quellfrequenzsegment-Replikationsstartsequenznummer-Berechnungsmodul ist vorgesehen, um dem Quellfrequenzsegment und der Startsequenznummer des Nullbit-Codierungsteilbands, das der Spektralbandreplikation bedarf, entsprechend die Quellfrequenzsegment-Replikationsstartsequenznummer dieses Nullbit-Codierungsteilbands zu berechnen.
-
Das Spektralbandreplikationsmodul ist vorgesehen, um die Spektralbandreplikationsperiode als Periode zu nehmen und von der Quellfrequenzsegment-Replikationstartsequenznummer an die periodische Replikation der Frequenzbereichskoeffizienten des Quellfrequenzsegments auf das Nullbit-Codierungsteilband durchzuführen.
-
Wenn die höchste Frequenz innerhalb des Nullbit-Codierungsteilbands, das der Spektralbandreplikation bedarf, kleiner ist als die gesuchte Tonfrequenz, dann wendet dieser Frequenzpunkt zur Durchführung der Spektrumsrekonstruktion nur die Rauschfüllung an, ohne die Spektralbandreplikation durchzuführen.
-
Das Tonpositionssuchmodul wendet das folgende Verfahren an, um die Tonposition zu suchen: das Nehmen des Absolutwerts oder Quadratwerts der MDCT-Frequenzbereichskoeffizienten des ersten Frequenzsegments und das Durchführen der Glättungsfilterung; und dem Ergebnis der Glättungsfilterung entsprechend, das Suchen nach der Position des maximalen Extremwerts der Filterungsausgabe des ersten Frequenzsegments, und das Nehmen der Position dieses maximalen Extremwerts als die Tonposition.
-
Bevorzugt ist die Operationsformel dieses Tonpositionssuchmoduls des Nehmens des Absolutwerts der MDCT-Frequenzbereichskoeffizienten des ersten Frequenzsegments, um die Glättungsfilterung durchzuführen: X_ampi(k) = μX_ampi-1(k) + (1 – μ)|X i(k)|
-
Oder die Operationsformel des Nehmens des Quadratwerts der Frequenzbereichskoeffizienten des ersten Frequenzsegments zur Durchführung der Glättungsfilterung ist: X_ampi(k) = μX_ampi-1(k – 1) + (1 – μ)X i(k)2 Wobei μ ein Glättungsfilterungskoeffizient ist, dessen Wert in diesem Beispiel 0,125 sein kann, X_ampi(k) die Filterungsausgabe des k-ten Frequenzpunkts des i-ten Frames bezeichnet, und X i(k) die decodierten MDCT-Koeffizienten nach der Decodierung des k-ten Frequenzpunkts des i-ten Frames sind, und wenn i = 0, X_ampi-1(k) = 0.
-
Bevorzugt ist das erste Frequenzsegment ein bestimmtes Frequenzsegment mit niedrigen Frequenzen, dessen Energie den spektralstatistischen Eigenschaften gemäß stärker zentralisiert ist, wobei die niedrige Frequenz sich auf Spektralkomponenten bezieht, die weniger als die Hälfte der Gesamtbandbreite des Signals ausmachen.
-
Bevorzugt sucht das Tonpositionssuchmodul in den Filterungsausgaben der Frequenzbereichskoeffizienten, die dem ersten Frequenzsegment entsprechen, direkt nach einem anfänglichen Maximalwert, und dieser Maximalwert wird als der maximale Extremwert der Filterungsausgaben des ersten Frequenzsegments genommen.
-
Bevorzugt wird, wenn das Tonpositionssuchmodul den maximalen Extremwert der Filterungsausgaben bestimmt, ein Segment im ersten Frequenzsegment als zweites Frequenzsegment genommen, und ein anfänglicher Maximalwert wird in den Filterungsausgaben der Frequenzbereichskoeffizienten gesucht, die dem zweiten Frequenzsegment entsprechen, und je nach Position des Frequenzbereichskoeffizienten, der diesem anfänglichen Maximalwert entspricht, werden verschiedene Prozesse durchgeführt:
- (a) wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten einer niedrigsten Frequenz des zweiten Frequenzsegments ist, wird diese Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des zweiten Frequenzsegments mit der Filterungsausgabe des Frequenzbereichskoeffizienten der früheren niedrigeren Frequenz im ersten Frequenzsegment verglichen und fortlaufend vorwärts verglichen, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des früheren Frequenzbereichskoeffizienten, und die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten ist dann der endgültig bestimmte maximale Extremwert, oder sie wird verglichen, bis die Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des ersten Frequenzsegments größer ist als die Filterungsausgabe des späteren Frequenzbereichskoeffizienten, und die Filterungsausgabe des Frequenzbereichskoeffizienten der niedrigsten Frequenz des ersten Frequenzsegments ist dann als der endgültig bestimmte maximale Extremwert;
- (b) wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten einer höchsten Frequenz des zweiten Frequenzsegments ist, wird diese Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des zweiten Frequenzsegments mit der Filterungsausgabe des Frequenzbereichskoeffizienten der späteren höheren Frequenz im ersten Frequenzsegment verglichen und fortlaufend rückwärts verglichen, bis die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten größer ist als die Filterungsausgabe des späteren Frequenzbereichskoeffizienten, und die Filterungsausgabe des aktuellen Frequenzbereichskoeffizienten ist dann der endgültig bestimmte maximale Extremwert, oder sie wird verglichen, bis die Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des ersten Frequenzsegments größer ist als die Filterungsausgabe des früheren Frequenzbereichskoeffizienten, und die Filterungsausgabe des Frequenzbereichskoeffizienten der höchsten Frequenz des ersten Frequenzsegments ist dann der endgültig bestimmte maximale Extremwert;
- (c) wenn dieser anfängliche Maximalwert die Filterungsausgabe des Frequenzbereichskoeffizienten zwischen der niedrigsten Frequenz und der höchsten Frequenz im zweiten Frequenzsegment ist, ist der Frequenzbereichskoeffizient, der diesem anfänglichen Maximalwert entspricht, die Tonposition, das heißt, dieser anfängliche Maximalwert ist der endgültig bestimmte maximale Extremwert.
-
Bevorzugt umfasst der Prozess des Quellfrequenzsegment-Startsequenznummer-Berechnungsmoduls zur Berechnung der Quellfrequenzsegment-Replikationsstartsequenznummer des Nullbit-Codierungsteilbands, das der Spektralbandreplikation bedarf: das Erhalten der Sequenznummer des Startfrequenzpunkts des Nullbit-Codierungsteilbands, dessen Frequenzbereichskoeffizienten zu rekonstruieren sind, wobei die Sequenznummer als fillband_start_freq bezeichnet wird und die Sequenznummer des Frequenzpunkts, der dem Ton entspricht, als Tonal_pos bezeichnet wird, wobei die Replikationsperiode erhalten wird, indem 1 zu copy_period addiert wird und die Quellsegment-Startsequenznummer als copyband_offset bezeichnet wird, wobei der Wert von fillband_start_freq rekursiv von copy_period subtrahiert wird, bis der Wert im Wertebereich der Sequenznummer des Quellfrequenzsegments liegt, und dieser Wert ist dann die Quellfrequenzsegment-Replikationsstartsequenznummer, die als copy_pos_mod bezeichnet wird.
-
Bevorzugt umfasst die Spektralbandreplikation, die vom Frequenzbandreplikationsmodul durchgeführt wird, insbesondere:
die Frequenzbereichskoeffizienten werden von der Quellfrequenzsegment-Replikationsstartsequenznummer an beginnend mit fillband_start_freq fortlaufend rückwärts auf das Nullbit-Codierungsteilband repliziert, bis der Frequenzpunkt der Quellfrequenzsegmentreplikation einen Frequenzpunkt von Tonal_pos + copyband_offset erreicht, und die Frequenzbereichskoeffizienten werden vom copyband_offset-Frequenzpunkt an kontinuierlich rückwärts auf dieses Nullbit-Codierungsteilband weiterrepliziert, und der Rest kann durch Analogie abgeleitet werden, bis die Replikation aller Frequenzbereichskoeffizienten des aktuellen Nullbit-Codierungsteilbands abgeschlossen ist.