TTS / Pre-roll Silence Application Guide for Voice Guidance
This document explains how to apply pre-roll silence before playback to prevent initial syllable loss, clipping at the start of playback, and device output path initialization delay that may occur during TTS and voice guidance playback.
Scope of Application
- TTS-based voice guidance
- Recorded audio-based guidance messages
- All voice output paths such as navigation, notifications, and status guidance
Basic Policy
Application of Pre-roll Silence
It is recommended to apply a pre-roll silence of 150 ms to 200 ms before the start of all voice guidance playback.
- Minimum recommended value: 150 ms
- Basic recommended range: 150 ms to 200 ms
- Less than 150 ms may result in initial syllable loss depending on the device and playback environment
- Applying more than 200 ms may cause perceived delay and should be used only exceptionally if necessary
Application Principles
- Voice guidance does not play immediately without silence.
- Pre-roll silence is applied consistently.
- The basic policy remains the same despite variations across services/platforms/devices.
Application Location
Pre-roll silence is processed at the audio data level as much as possible. The recommended priority is as follows:
- Insert silence padding at the front of audio data such as PCM/WAV
- Add silence as post-processing after generating TTS output
- Playback delay method
- Handling with playback delay alone is not recommended due to large scheduling variations.
Continuous Playback Handling
- Apply pre-roll silence when starting a single guidance.
- Do not insert unnecessary additional silence in continuous voice that flows as a single natural utterance unit.
- Reapply if stream playback is interrupted or starts as a new session.
Implementation Considerations
In addition to applying pre-roll silence, the following conditions must be checked:
- The audio output path should be pre-initialized.
- Audio focus or audio session acquisition should be completed.
- The decoder/player/output device should be in a playable state.