
DreamVoice
Advanced spatial audio framework for Paper, Fabric & Simple Voice Chat. Featuring soundproof acoustic physics (VoiceWall), 3D visualizer, spatial speakers, covert wiretaps, radio channels, playable audio cassettes, DSP filters & speech AI.
Оцените первым
144
3
Список изменений
Changelog 2.0.0
🚀 Architectural Overhaul & Modular Storage
- Modular Folder & Storage Architecture:
- Transitioned from a monolithic layout to a clean, isolated per-module directory structure under
plugins/DreamVoice/modules/:modules/wall/config.json: Acoustic occlusion, diffraction, and material attenuation properties.modules/speaker/data.json: 3D directional and omni speaker locations and configurations.modules/radio/data.json: Walkie-talkie and radio frequency channels.modules/record/: Dedicated subdirectories for raw capture (recordings/) and converted audio files (exports/).modules/wiretap/data.json: Wiretapping bugs persistence.modules/projection/data.json: Voice projections.modules/transmitter/data.json: Voice transmitters.
- Preserved Root Audio Library:
- The
plugins/DreamVoice/sounds/directory remains directly at the root, allowing all modules (Speakers, Radios, Intercoms) to seamlessly share common sound effects, chimes, and alarms without duplicate assets.
- The
- Root
config.jsonDedicated to Modules:- The root
config.jsonis now streamlined to exclusively handle module toggling (modules: { wall: true, speaker: true, ... }).
- The root
- Per-Module Persistence Configuration (
config.json):- Each persistent module (
speaker,radio,wiretap,projection,transmitter,room) includes its ownpersistenceblock withinmodules/<module>/config.json:save_on_stop: Whenfalse, ignores saving on server shutdown (onDreamDisable).auto_save: Enables or disables background periodic auto-saving.auto_save_interval_seconds: Dedicated interval in seconds for asynchronous persistence per module.
- Each persistent module (
- Zero-Loss Hot Migration:
- Automatic migration on startup: existing data from
data/*.json,recordings/, andexports/are moved safely into their respectivemodules/directories with zero administrative intervention and zero downtime.
- Automatic migration on startup: existing data from
- Transitioned from a monolithic layout to a clean, isolated per-module directory structure under
🌍 DreamAPI LangService Integration
- Decoupled Localization Engine:
- Integrated DreamAPI's
LangService(fr.dreamin.dreamapi.api.lang.service.LangService). - DreamVoice explicitly boots
LangServiceImplwhen running with@EnableServices(mode = LoadMode.NONE). - All hardcoded chat, action bar, title, and item lore strings are moved to
plugins/DreamVoice/lang/lang-dreamvoice.json. - Automatic per-player client locale resolution (
player.locale()) with seamless fallback to English defaults.
- Integrated DreamAPI's
🎒 DreamAPI ItemRegistryService Voice Handlers
VoiceItemHandler&VoiceItemContext:- Introduced native voice handlers designed for DreamAPI's
ItemDefinition.builder():VoiceItemHandler.addFilter("filterId"): Applies voice filter (e.g. onItemAction.SET_ARMORorItemAction.HELD).VoiceItemHandler.removeFilter("filterId"): Removes voice filter (e.g. onItemAction.REMOVE_ARMORorItemAction.UNHELD).VoiceItemHandler.toggleFilter("filterId"): Toggles filter on/off with feedback (e.g. onItemAction.RIGHT_CLICK).VoiceItemHandler.timedFilter("filterId", Duration): Applies a filter for a typedjava.time.Durationbefore auto-reverting.VoiceItemHandler.connectRadio("frequency")&disconnectRadio().VoiceItemHandler.of(consumer): Exposes an enrichedVoiceItemContextfor custom item logic directly in item builders.
- Introduced native voice handlers designed for DreamAPI's
🎛️ Custom File Filters & Auto-Registration Engine
- Annotation-Driven Auto-Registration (
@AutoVoiceFilter):- Introduced
@AutoVoiceFilter(priority = ..., enabled = ...)for automated discovery and registration of third-party or addon filters viavoiceFilterService.registerAnnotatedFilters(Collection<Class<?>>).
- Introduced
- Dynamic File Filters (
.yml,.json,.java):- Removed hardcoded filter implementations from
coresource code in favor of a 100% file-first architecture. - All 13 built-in filters (
AlienVoiceFilter.java,CaveVoiceFilter.java,DeepVoiceFilter.java,DisguiseVoiceFilter.java,GasmaskVoiceFilter.java,GhostVoiceFilter.java,HeliumVoiceFilter.java,MegaphoneVoiceFilter.java,MuffledVoiceFilter.java,RadioVoiceFilter.java,RobotVoiceFilter.java,TelephoneVoiceFilter.java,UnderwaterVoiceFilter.java) are stored incore/src/main/resources/modules/filter/filters/and automatically extracted toplugins/DreamVoice/modules/filter/filters/upon first server boot. - Filters can be created, tweaked, or removed on the fly in
plugins/DreamVoice/modules/filter/filters/. - Declarative DSP pipeline for
.ymland.json: support forlowpass,highpass,gain,overdrive,ring_modulator, anddelay/echo. - Hot-compilation of
.javasource files on-the-fly via JDKJavaCompilerwith custom in-memory classloading and dependency resolution against DreamVoice and DreamAPI. - Filter Exporter Engine:
- Added API method
voiceFilterService.exportFilter(filterId, format)supporting"yml","json", and"java". - Added commands:
/voice filter list,/voice filter reload, and/voice filter export <filter> <yml|json|java>. - Allows exporting any active filter into a declarative pipeline file (
.yml/.json) or extracting its full Java source code (.java) directly intomodules/filter/filters/.
- Added API method
- Removed hardcoded filter implementations from
🏰 Acoustic Zones & Soundproof Rooms (Acoustic Rooms)
- Module
room(plugins/DreamVoice/modules/room/):modules/room/config.json: Defines reusable acoustic presets with dedicated sound isolation percentage (isolation_pct), spatial reverberation (reverb), and automated voice filters (filters). Includes modulepersistenceconfiguration.modules/room/data.json: Stores active rooms and their DreamAPICuboidspatial bounds.
- Soundproofing & Room Attenuation Integration:
- Connected directly to
VoiceWallServiceImpl.processEntitySoundPacket. - Sound isolation blocks sound transmission completely (100% loss) if either the sender or receiver is inside a fully soundproof room, or if they are in distinct isolated rooms.
- Proportional sound attenuation loss is calculated based on effective isolation percentages.
- Connected directly to
- Dynamic Presence & Filter Stacking:
- Event listeners for DreamAPI
CuboidPlayerEnterEventandCuboidPlayerLeaveEventautomatically track player room transitions and attach or detach room filters seamlessly.
- Event listeners for DreamAPI
- Commands & Management:
- Added
/voice room list,/voice room info <id>,/voice room delete <id>, and/voice room reload.
- Added
🎙️ Speech-to-Text, Keyword Spotting & Interactive Transcription Stations
- Module
speech(plugins/DreamVoice/modules/speech/):config.json: Comprehensive configuration with English default texts, transcription mode selection (LOCALorSIDECAR), station parameters, and analysis display settings.keywords.json: Dedicated configuration defining keywords, aliases, confidence thresholds, cooldowns, and required permissions.models/: Dedicated directory storing offline Vosk models, manageable manually or downloaded via command.
- Realtime Keyword Spotting (KWS) with Constrained Vosk Grammar:
- Ultra-lightweight asynchronous background listening per player powered by Vosk.
- Utilizes a constrained grammar JSON array containing only registered keywords and
[unk], minimizing CPU usage and eliminating dictionary hallucinations. - Instant recognizer reset on keyword trigger to prevent duplicate triggers across consecutive 20ms audio frames.
- Configurable audio energy gate (
min_energy_threshold) preventing microphone hiss and background noise from feeding into the speech decoder. - Automatic phonetic buffer clearance on speech pauses (
silence_reset_ms), eliminating phantom residue and cross-phrase keyword hallucinations. - Triggers the Bukkit
VoiceKeywordSpokenEvent(player, keyword, matchedWord, confidence)for game scripting, roleplay spells, secret doors, and voice interactions. - Live debug inspector via
/voice speech debug [player]or global console logging.
- Interactive Audio Cassette Transcription Stations:
- Right-click with an Audio Cassette on a configured block (
LECTERN,JUKEBOX, or custom block materials). - Fully customizable analysis feedback with multiple display types (
ACTION_BAR,CHAT,TITLE), default English strings, andLangServicei18n translation keys. - Configurable sound effects and particle animations during the analysis period.
- Generates a formatted Written Book (
Material.WRITTEN_BOOK) containing paginated transcripts, timestamps ([00:14] Player: Text), and translatable metadata. - Automatic lectern placement (
put_on_lectern) when interacting with an empty lectern.
- Right-click with an Audio Cassette on a configured block (
- Hybrid Local (Vosk) & Sidecar (faster-whisper) Transcription Engine:
LOCALmode: runs directly inside the JVM usingcom.alphacephei:vosk.SIDECARmode: offloads audio transcription over asynchronous HTTP to an external Whisper instance with automatic fallback to local Vosk (fallback_to_local).- Production-ready official Pterodactyl Egg (
egg-dreamvoice-transcription.json).
- Model Management & Commands:
/voice speech download <lang|model>: Asynchronously downloads and unpacks official Vosk models without server freezes. Supports both lightweight small models (fr,en,de,es,it,ja,ru,pt,nl,zh) and high-accuracy big server models (fr-big,en-big,de-big,es-big,it-big,ja-big,ru-big,zh-big,hi-big,uk-big)./voice speech models&/voice speech setmodel <model>: Inspects and selects the active speech recognition model./voice speech transcribe <id> [book|chat]: Manual transcription utility for staff, moderators, and storytellers./voice speech keywords: Displays all active keyword spotting definitions and trigger phrases./voice speech reload: Hot-reloads speech configuration, keywords, and Vosk grammar definitions.
Файлы
DreamVoice.jar(34.21 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
2.0.0
Загрузчики
PaperPurpurSpigot
Версии игры
26.1.2
Загрузок
9
Дата публикации
08.09.2026
