语音盒
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | computronics:speechBox |
| 方块类 | pl.asie.computronics.block.BlockSpeechBox |
| TileEntity | pl.asie.computronics.tile.TileSpeechBox |
| 文档名 | speech_box(BlockSpeechBox.java:22) |
| 创造标签 | tabComputronics(BlockSpeechBox.java:23) |
| 双重开启条件 | tts.enableTextToSpeech 且 enable.speechBox(Computronics.java:318、Computronics.java:326-330) |
功能
文本转语音(TTS)方块,把字符串合成为语音并像扩音器一样播放。
双重条件下的注册顺序(Computronics.java:318-331):
- 先判
Config.TTS_ENABLED; - 为真则调
TextToSpeechLoader.INSTANCE.preInit()初始化 MaryTTS,成功后new TextToSpeech()并再判tts.preInit(),失败则tts = null; - 然后才判
isEnabled("speechBox", true)注册方块与 TileEntity。
因此即使 enable.speechBox = true,只要 TTS 初始化失败,语音盒根本不会注册——包括它的配方(ModRecipes.java:108-121、:380-399 都以 Computronics.speechBox != null 为前提)。
实现位于 pl.asie.computronics.audio.tts(TextToSpeech / TextToSpeechLoader / SynthesizeTask)。合成在独立线程执行,依赖外部 MaryTTS 服务。
数值
| 数值名 | 值 | 范围 | 来源 |
|---|---|---|---|
tts.enableTextToSpeech |
true |
布尔 | Config.java:140-144 |
tts.maxPhraseLength |
300 | 0–100000 | Config.java:145-151 |
Config.TTS_ENABLED 字段初值 |
无(默认 false) |
— | Config.java:59 |
TTS_ENABLED声明处未给初值(Config.java:59),Java 默认false。实际生效值来自tts.enableTextToSpeech,配置默认true。tts.maxPhraseLength的单位是文本字节数(Config.java:150-151描述),代码中源码注释标为 TODO。
交互
| 触发 | 行为 |
|---|---|
| 外部 | 无独立 GUI;经外设提交待朗读文本 |
| 文本长度 | 单次处理不超过 tts.maxPhraseLength 字节 |
合成配方
无 OC 配方(ModRecipes.java:108-121):
iii
iai
iri
| 字符 | 物品 |
|---|---|
i |
铁锭 ingotIron |
r |
末影珍珠 minecraft:ender_pearl |
a |
扩音器 → 铁音符盒 → 音符盒(依次回退) |
OC 配方(ModRecipes.java:380-399):
ici
sag
ibi
| 字符 | 物品 |
|---|---|
i |
铁锭 ingotIron |
c |
oc:cpu2 |
s |
oc:circuitChip3 |
g |
铁栅栏 minecraft:iron_bars |
a |
扩音器 → 铁音符盒 → 音符盒(依次回退) |
b |
oc:materialCircuitBoardPrinted |