Vietnamese language customize in Asterisk

Hey guys,

I’m trying to customize Vietnamese prompts in Asterisk / FreePBX.

From what I see, sound files are used across multiple components (IVR, voicemail, system prompts…), so I’m a bit worried about breaking things if I change them.

A few quick questions:

  • Is it safe to modify /var/lib/asterisk/sounds/ directly, or should I create a custom path?

  • Any best practices for managing/customizing prompts (naming, structure, versioning)?

  • Anyone here done a full Vietnamese voice setup? Any gotchas?

I’m looking for a simple and maintainable approach.

Thanks!

Vietnamese versions should go in /var/lib/asterisk/sounds/vi/

You may need to modify /etc/asterisk/say.conf, for grammar rules. FreePBX doesn’t seem to overwrite the Asterisk version, but it might have checksummed it, so you might get tamper warnings.

Ideally you should do a complete set of sound files, and submit them to the Asterisk (not FreePBX) project.

One angle that hasn’t been mentioned yet is to treat your Vietnamese prompts as a separate “sound pack” layer, not just a folder of overrides.

Instead of modifying anything in-place, define a consistent override strategy:

  • Keep all custom audio in /var/lib/asterisk/sounds/vi/custom/

  • Never touch core files, even inside /vi/

  • When you need to override a prompt, reference it explicitly in dialplan or FreePBX GUI (e.g. custom IVR prompts), rather than relying on filename collisions

Why this matters: FreePBX modules and Asterisk updates can reintroduce or expect specific filenames. If you override by replacing, you lose track of what’s stock vs custom very quickly.

For maintainability, a simple structure that works well in practice:

  • vi/system/ → translated core prompts (only if you really must)

  • vi/custom/ivr/ → IVR-specific prompts

  • vi/custom/vm/ → voicemail greetings/instructions

  • vi/custom/misc/ → anything one-off

Then version that whole vi/ tree in git (even locally). It sounds overkill, but the first time you tweak phrasing or audio levels, you’ll want rollback.

A couple of gotchas people usually hit with Vietnamese specifically:

  • Number pronunciation + tones don’t always map cleanly with say.conf, especially for things like dates, currency, or extensions. Test anything dynamically generated (voicemail timestamps, queue positions).

  • Make sure you standardize audio format early (e.g. slin16 or wav 16kHz) to avoid transcoding overhead and inconsistent playback quality.

  • Some FreePBX modules hardcode prompt expectations, so even with /vi/, you may still need to manually assign prompts in the GUI instead of relying on auto-selection.

If your goal is “simple and maintainable,” the key rule is:
don’t override implicitly, always override explicitly.