File size: 3,541 Bytes
ac573f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
{
  "name": "dynamic-accent-duplex",
  "version": "0.2.0-experimental",
  "type": "cascaded full-duplex speech-to-speech voice agent (pipeline, not a single model)",
  "languages": [
    "en",
    "pcm",
    "ig",
    "yo",
    "ha"
  ],
  "code_license": "apache-2.0",
  "library_name": "pytorch",
  "components": {
    "vad": {
      "model": "snakers4/silero-vad (v5, pip silero-vad)",
      "license": "MIT",
      "settings": {
        "frame_ms": 32,
        "speech_start_ms": 96,
        "end_of_turn_silence_ms": 600,
        "speculative_start_ms": 256,
        "barge_in_speech_ms": 192
      }
    },
    "asr": {
      "model": "Dynamic ASR real (Modularcomputing/dynamic-asr, real/model.pt) = Meta omniASR_CTC_1B_v2 fine-tuned on licensed Nigerian speech",
      "source": "https://huggingface.co/Modularcomputing/dynamic-asr",
      "license": "CC-BY-SA-4.0 (weights; base Apache-2.0)",
      "alternatives": {
        "dynamic-asr-cs": "codeswitch-experimental/model.pt (experimental)",
        "omni": "facebook omniASR_CTC_1B (Apache-2.0), also the automatic fallback"
      },
      "env": "ASR_MODEL=dynamic-asr|dynamic-asr-cs|omni",
      "settings": {
        "decoding": "greedy CTC, language-agnostic, Latin-script logit mask",
        "partials_every_s": 0.64
      }
    },
    "language_id": {
      "model": "Dynamic Accent tagger.py (rules: diacritics, lexicons, Pidgin markers) + GlotLID v3 sliding windows",
      "glotlid": "cis-lmu/glotlid",
      "license": "Apache-2.0 (tagger code) / Apache-2.0 (GlotLID)"
    },
    "reply_llm": {
      "model": "Qwen/Qwen3-30B-A3B-Instruct-2507-FP8",
      "license": "Apache-2.0",
      "server": "vLLM (Apache-2.0), OpenAI-compatible, served name 'llm'",
      "settings": {
        "candidates_per_round": 3,
        "rounds": 2,
        "temperature": [
          0.7,
          0.9
        ],
        "max_tokens": 110
      }
    },
    "validator": {
      "checks": [
        "tag format",
        "mix TVD <= 0.3 vs target",
        "every target language >= 15% present",
        "greeting pattern kept",
        "length 2-40 words",
        "no loops",
        "no echo of the user's words",
        "non-English tags not over English words"
      ],
      "fallback": "best candidate if tags parse; for ibo/yor/hau/pcm-matrix turns that echo or drift: a phrasebook opener in the user's language + a clarification request"
    },
    "tts": {
      "model": "Dynamic Accent Flash-DPO (checkpoints/flash/flash_dpo in Modularcomputing/dynamic-accent-pro-v1.1)",
      "base": "FunAudioLLM/Fun-CosyVoice3-0.5B-2512 (Apache-2.0)",
      "license": "CC-BY-SA-4.0 (weights, voice prompts)",
      "voice": "anchor_male",
      "streaming": "chunk-level: first chunk <= 6-10 words, then sentences <= 22 words",
      "diacritics": "Dynamic Accent ByT5 diacritic restorer (CC-BY-SA-4.0; google/byt5-small Apache-2.0 base), only for ibo/yor spans without tone marks"
    },
    "backchannels": {
      "phrases": {
        "eng": "Mm-hmm.",
        "pcm": "Ehen.",
        "ibo": "Ehen.",
        "yor": "Ehen.",
        "hau": "To."
      },
      "rule": "user turn >= 4.5 s, mid-turn pause 288-448 ms, >= 10 s apart"
    }
  },
  "not_included_weights": "This repo ships code and config only; every model is downloaded from its own repository under its own licence.",
  "excluded_on_licence": [
    "African Voices / WaZoBia (TTS use banned)",
    "NaijaVoices (non-commercial)",
    "N-ATLaS (1,000-user cap, share-alike)",
    "Gemma 3 (gated; not tested)"
  ]
}