Zum Inhalt
Anmelden

/docs · VoiceLab · Deep

Was der Hüllkurvenabfall nach Sprache wirklich misst

Wir haben aus dem Abfall nach jeder Phrase einen günstigen Hall-Schätzer gebaut und ihn gegen 24 gemessene Räume geprüft. Er misst keinen Hall. Hier sind die Zahlen und was wir geändert haben.

Aktualisiert 27.09.2026


RT60 verlangt ein bekanntes Signal im Raum. Das geht bei einer Aufnahme, die jemand schon gemacht hat, nicht. Für Sprach-QA haben wir deshalb einen günstigen Schätzer gebaut: messen, wie viel Energie direkt nach dem Ende jeder Phrase noch steht, im Verhältnis zur Phrase selbst. Ein lebendiger Raum klingt nach, ein bedämpfter nicht.

Am 27. September 2026 haben wir diesen Schätzer gegen Räume geprüft, deren Nachhallzeit tatsächlich gemessen wurde. Er fiel durch. Diese Seite ist die Messung, die Prüfung und was wir geändert haben, denn ein nachrechenbares negatives Ergebnis ist mehr wert als eine Schwellentabelle, die sich gut liest.

Die Messung

Die Übergänge von Sprache zu Stille mit einem einfachen Energie-Gate finden und danach die Hüllkurve im Ausklang gegen den Pegel am Übergang lesen.

function decayRatio(envelope, mask, hopSec) {
  const decays = [];
  for (let i = 1; i < mask.length - 30; i++) {
    if (mask[i - 1] && !mask[i]) {
      const peak = envelope[i - 1];
      if (peak < 1e-5) continue;
      const window = Math.min(30, Math.floor(0.6 / hopSec));
      let tail = 0;
      for (let k = 0; k < window; k++) tail += envelope[i + k];
      tail /= window;
      decays.push(tail / peak);
    }
  }
  return decays.reduce((a, b) => a + b, 0) / decays.length;
}

Am Code ist nichts falsch. Das Problem ist, was die Zahl bedeuten sollte.

Wogegen wir geprüft haben

  • Echte Räume, ohne zugefügtes Rauschen. Fünf saubere Sätze durch 24 gemessene Impulsantworten, mit Nachhallzeiten von 0,18 bis 1,71 s.
  • Rauschen mit und ohne Hall. 1.280 Aufnahmen, vier Umgebungen, Signal-Rausch-Abstände von 20, 10, 5 und 0 dB, jeweils mit und ohne 0,5 s Hall.
  • Ein Nachbau, der über alle 1.760 Dateien um 0,0000 von der Engine abwich, damit das Ergebnis für den ausgelieferten Code gilt und nicht für eine Annäherung.

Was die Zahlen sagten

FrageAnforderungErgebnis
Folgt er der gemessenen RT60 echter Räume? (Spearman)0,70 oder besser0,06
Trennt er Hall von trocken bei 20 dB SNR? (AUC)0,75 oder besser0,52
Dieselbe Frage bei 10 dB SNR0,75 oder besser0,55
Bleibt er von Rauschen allein unbewegt? (AUC)zwischen 0,35 und 0,650,68

Eine AUC von 0,5 ist Münzwurf. Die deutlichste Einzelzahl: ein Raum mit 1,71 s Nachhall kam auf 0,175, eine Kabine mit 0,18 s auf 0,186. Der hallige Raum lag also unter der Kabine.

Das Einzige, was die Messung zuverlässig tut, ist mit Hintergrundrauschen zu steigen. Das ist genau das falsche Verhalten für etwas, das “Raum” heißt.

Warum er durchfällt

Drei Gründe, jeder für sich behebbar und zusammen nicht genug:

  1. Der Rauschboden ist das 10. Perzentil der ganzen Datei. Bei wechselndem Hintergrund liegt das Rauschen in einer Pause deutlich darüber, und die Differenz wird als Ausklang gezählt.
  2. Es wird nicht geprüft, ob der Ausklang noch in der Pause liegt. Das Fenster läuft von 60 bis 420 ms nach dem Phrasenende, und nachdem kurze Lücken geschlossen wurden, sind viele Pausen kürzer. Dann misst er den Anfang des nächsten Wortes.
  3. Die Skala stimmt auch ohne diese zwei nicht. Eine echte RT60 von 0,5 s ergibt theoretisch ein Verhältnis von etwa 0,09, und das liegt unter der Grenze von 0,15, die “Dry” bedeutete. Mittlerer Hall hieß damit immer trocken.

Mit 20 ms Schrittweite und den Sprüngen der Sprache selbst ist der Abfall nach einer Phrase zu grob, um Hall daraus zu lesen. Das ist eine Forschungsfrage, keine kleine Reparatur.

Was sich am 27. September 2026 geändert hat

  • Das Label Dry / Tight / Live / Reverberant ist aus der Engine-Ausgabe verschwunden, nicht auf einen Standardwert gesetzt. Ein Feld, das immer leer ist, ist keine Messung zum Ausliefern.
  • Die Klartext-Karte mit dem Rat, den Raum zu bedämpfen, ist weg, ebenso der Abzug, den diese Zahl in der Verständlichkeitsbewertung verursachte. Dieser Abzug bestrafte eine rauschige Aufnahme zweimal.
  • Die Zahl bleibt, unter dem Namen dessen, was sie misst: Energie in den Pausen nach Sprache, Rauschen oder Hall, und sie trennt die beiden nicht. Lesen Sie sie als “wie viel steht noch in den Lücken”, niemals als Urteil über den Raum.
  • In der API und im MCP-Server heißt das Feld weiterhin roomEchoScore. Ein veröffentlichtes Feld umzubenennen bricht gespeicherte Verläufe und bestehende Anbindungen, das ist also eine eigene Entscheidung und nicht Teil dieser Korrektur. Die Beschreibung sagt, was gemessen wird.

Was die Frage wirklich beantworten würde

Wer eine Hallzahl aus einer Aufnahme allein braucht, hat zwei ehrliche Kandidaten: ein Maß auf dem Modulationsspektrum wie SRMR, oder ein kleines Modell, trainiert auf gemessenen Impulsantworten. Beide lassen sich gegen dieselben 24 Räume prüfen.

Die Regel, die wir uns gesetzt haben: ein neues Maß darf erst Hall heißen, wenn es diese Prüfung besteht. Bis dahin bekommt es einen Namen, der die Rechnung beschreibt.

Weiterlesen

Weiter in VoiceLab docs

Mit einem Klatschen messen, wie lange ein Raum nachhallt →

Das Profil room liest die Nachhallzeit pro Oktavband aus einem Klatschen, einem Ballonknall, einer Impulsantwort oder einem Sweep. Wie man es aufnimmt, wie man die Antwort liest und wie weit die Zahlen geprüft sind.

More in VoiceLab docs