HASap: Hierarchical Acoustic-Semantic Annotation Pipeline for Scripted Speech Data

Abstract. Scripted speech (e.g., audiobooks, dramas) is a rich source for expressive text-to-speech (TTS) synthesis as it tightly couples narrative semantics with acoustic delivery. However, conventional data annotation pipelines either process utterances in isolation or rely solely on text cues, resulting in supervision that is inconsistent across utterances and only weakly grounded in acoustics. To overcome these limitations, we propose HASap, a novel hierarchical acoustic–semantic annotation pipeline that integrates three levels of supervision: (i) global narrative semantics inferred by LLM, (ii) utterance-level delivery style reconciled with scene and role context, and (iii) local prosodic emphasis derived from acoustic cues. In addition, the pipeline performs context-aware resegmentation to produce role-consistent and semantically coherent speech segments, making them suitable for controllable and expressive TTS training. Tested on the StoryTTS dataset with CosyVoice 2, HASap significantly outperforms both text-only and unannotated baselines on objective and subjective metrics. Ablation studies confirm that hierarchical annotations provide effective control over both overall expressiveness and fine-grained prosody.

📦 Prompts and Annotations on GitHub

Contents

System Overview

Figure 1. Overview of the HASap pipeline. The workflow comprises three stages: (1) Speech Preprocessing; (2) Hierarchical Annotation; and (3) Context-Aware Resegmentation. Example texts originate in Chinese and are shown here in English translation.

Annotation Systems Comparison

Compared systems: We compare three systems trained on StoryTTS with a CosyVoice 2 backbone:
(i) HASap: trained with HASap annotations;
(ii) StoryTTS-Orig: trained with the original StoryTTS annotations;
(iii) Transcript-only: trained without additional expressiveness annotations.
These systems differ only in supervision. For reference, we also report GT (ground-truth recordings).

Text HASap StoryTTS-Orig Transcript-only GT
就这一笑不要紧,主父衍觉得毛骨悚然,
旨意算传下去了,刹那间朝堂之上鸦雀无声,文武百官全都吓傻了,主父衍可了不得出这计策,大家伙你看看我,我看看你,看着看着都偷眼观瞧东方朔,东方朔这时候干什么呢?
皇上,臣曾经计算过,我大汉,凡是家产在五百万民以上,田地在五千亩以上,家奴在五百人以上的富豪,如果都迁到茂陵,至少得三百多家。
老百姓往旁边一闪,大侠郭解,腾腾腾往前走了几步,站到了营前。
将军,我郭解有何德能让你们父子这样信任于我?
公孙弘一听,往后倒退了两步,不过他听了之后心里确实也觉得有点委屈他知道,离骚这两句话说得非常清楚,而东方朔用宝剑指着自己朗诵出这两句话来。
只要太子在这招兵买马排兵布阵的情形传到长安城,皇上绝不会善罢甘休,恐怕淮南王落大年纪就得死在这件事上,再说,雷贝也听说了,郭解郭大侠!现在逃出在外,而且现在黄榜已然贴出来了。要捉拿郭解,皇上是非杀郭解不可。
因为公孙弘是个大儒者呀!他听出来了,东方朔朗诵的是屈原的离骚,咱们都知道,屈原姓屈,名平自原,在离骚当中,他称自己为灵君。
因为屈原出生的时候,正是更衣年,又是更衣月,又是更衣日,而且这年他出生的日子也正好是大年初一,屈原认为自己,出生就不是个凡人,将来必大有作为,而东方朔呢,恰恰也是大年初一生的,
东方夫人,你先替朕想想办法,文君呐,朕听说你琴弹得非常好,可是朕从来也没有听过,今天能给朕弹奏一曲吗?

Audiobook Synthesis


Scene Role Delivery Style Transcript Audio
东方朔亮剑阻止武士带走汲黯,主父衍试图阻止东方朔说话,东方朔开始行动。 旁白 无情感 ➡️ 害怕 立刻有两名武士就过来了,一左一右把汲黯架起来外就走,文武百官全都吓傻了,面对此情此景,谁敢替汲黯说一句话呀!就在这时候就听仓郎郎郎郎宝剑声音响,大家心说谁这么大的胆子敢在朝堂之上亮剑呢!大家众目观瞧,就瞧东方朔手持皇上赐的宝剑往前一递,
东方朔 骄傲 “慢!”
旁白 无情感 ➡️ 害怕 然后东方朔站在汲黯面前,冲着皇上长叹了一声,大家全都捏了一把汗,虽然说东方朔手中这口宝剑是皇上赐的,但是公然抗旨,皇上能饶了东方朔吗?主父衍最害怕东方朔说话呀
主父衍 害怕 皇上,东方朔他不能说话呀!
郭解动身迁居茂陵,途中受到杜县县令、奉明县县令和福丰太守迎接,但拒绝礼物,小人监视。 旁白 愤怒和厌恶➡️无情感 要怎么说俗话讲得,好欲加其罪何患无词啊,这三个朝中的小人,朝中的佞臣都盯上郭解了,郭解能跑得了吗?郭解在茂陵置办了田产之后,离皇上规定的日期还差五天,郭解夫妇就要动身离开杜县了。
旁白 无情感 大侠郭解名声在外,这一下传开了,郭解的门徒、徒子徒孙能来的全到了,大约来了三百多人,这一下把杜县的老百姓全都惊动起来了。郭解就把杜县的家产全都卖掉了,不能卖的就分给街坊士邻了。
旁白 悲伤➡️害怕和惊讶 整个家里的财物装了二十多辆车,那些受过大侠恩惠的人都流着眼泪来给郭解送行,舍不得郭解走门前都站满了人了。等郭解跟霍云儿抱着儿子郭佳一出门,郭解心说:坏了,了不得了。
旁白 悲伤➡️无情感 外边是人山人海,男男女女老老少少。全村镇的人几乎全到了,全都给大侠郭解送行。郭解再一看门中的徒弟,郭解的徒弟是分成等级的,如果能当上大徒弟了,那可了不得了。一个是人品好,第二是武艺高,第三,郭解他得爱这个人。
旁白 无情感 能升上大徒弟的,在郭解门徒当中也不过几十个。这二十几个大徒弟在大师兄郭昌的带动之下,在旁边伺候着师父。郭解上了车了,霍云儿抱着郭佳坐在车上,
郭解 悲伤 郭解抱拳拱手!众位,今天,郭解告辞了,迁到茂陵。
旁白 悲伤➡️无情感 各位父老乡亲有什么事情都到茂陵去找我,只要我郭解能做到的我一定给各位父老乡亲帮忙。说完这句话,他的大徒弟就把车帘撂下了,不然的话郭解是走不了吧,二十几辆车走动了,大侠郭解坐在车上看了看妻子霍云儿,再一看他怀中的儿子。郭解想把眼睛闭上休息一会儿。
旁白 害怕 刚走了一会儿,就在这时候,管家郭安走到车前。
管家 害怕 老爷!杜县县令许仲衡求见!
郭解 愤怒和厌恶➡️无情感➡️犹豫和害怕 不见,你告诉他。我奉皇命急于赶路,就请县令大人回府吧。郭解本身就不爱跟官府打交道,大徒弟郭昌在旁边就说,
郭昌 犹豫和害怕 师父,您不见不合适吧,许县令带着随从在这等好半天了,虽然您离开杜县,杜县的县令也是当地的父母官呢!
旁白 悲伤➡️无情感 这一下弄得郭解也没脾气了,好吧,那就见吧。车停住了,车帘挑开了。杜县县令许仲衡赶紧跑到前边抱拳使礼。哎哟,郭大侠!许仲衡在此等候多时,给大侠送行。
许仲衡 无情感 郭解也没下车,就在车上欠了欠身子。
郭解 无情感 谢谢许大人,郭某在杜县多有打扰了,承蒙关照。今日奉皇命前往茂陵,告辞了,就请大人你回府吧。
许仲衡 悲伤➡️无情感 大侠呀,您这一走,我杜县的父老乡亲真是舍不得。既然您奉皇命要走,本县就备了一份薄礼,略表心意,望大侠收纳。来呀,把礼物献上。/td>
旁白 无情感➡️愤怒 手下人抬过一个礼盒,在礼盒上有两块金锭。郭解拿眼睛一瞟,然后一摆手,
郭解 愤怒 慢,县令大人,"我郭解绝不收礼的。
郭解 无情感 哎呀,大侠呀您在杜县住了这么多年,我杜县百姓生活安定实在是靠大侠帮忙,我身为一县之长只是略表心意,望大侠千万不要推辞!好吧,
郭解 无情感 既然县令大人知道我郭解有爱民之心,就请您把这份礼物还有金锭拿去修建一下杜县的学堂吧。剩下的钱就选几个贫家子弟供他们读书求学,这也是遵从皇上的圣意啊。
许仲衡 无情感 “好好好,是皇上的旨意也是大侠您一片爱民之心,许某一定办好,告辞。”
旁白 无情感➡️愤怒 郭解双手一抱拳,车辆启动了,许县令一直到看不见郭解的车队才回归县衙。不仅是杜县县令许仲衡,这一路之上奉明县的县令陈宝成也是一样,对大侠郭解又接又迎,而且奉上礼品和一盘银锭。郭解是照旧不收,就请陈县令把钱分散给穷人。
旁白 无情感➡️愤怒➡️无情感 即至郭解这二十多辆车快到茂陵了,福丰太守胡清云竟然带着二百马队大道旁边迎接,郭解气坏了,郭解虽然生气,他万也没想到,在外边有张汤手下的心腹,就把这一切看得清清楚楚明明白白。这些小人借此机会要暗害郭解,下回再说。