Kaiwa Vox

かいわ · Japanese speech chip

Browser control surface for Kraftor Kaiwa firmware and the AquesTalk Pico module. GUI v1.0 — firmware version is read from the board.

Open the GUI

Requirements

After serial connect, the GUI requests !INFO?. The board replies with model, chip ID, RAM/FRAM layout, and firmware version — shown as FW v… in the header.

Text format

The AquesTalk Pico speaks Japanese, but its input is AquesTalk ASCII phonetic notation — the same romanization used by earlier Kaiwa firmware. It does not accept UTF-8 kanji, hiragana, or katakana; only half-width ASCII romaji and the symbols below.

A phrase may contain at most 127 ASCII bytes. The final carriage-return byte sent to the chip occupies the 128th byte allowed by its protocol. Every utterance must end with a sentence delimiter (usually .).

Building a sentence

Write Japanese readings in romaji, then add prosody marks. One accent phrase may contain at most one ' (or none). Put ' immediately after the mora where the pitch falls (high → low).

Symbol Role
reading lettersRomaji syllables (ka, shi, kyo, n, …)
'Accent nucleus — pitch drop after that mora
-Long vowel (hold the previous vowel)
/Accent-phrase break, no pause
+Softer phrase join (secondary accent), no pause
;Phrase break with a slight lift into the next phrase, no pause
spaceBreath / phrase boundary with pause
,Shorter pause than a space
.End of sentence (with pause)
?End of sentence, question intonation

Examples:

konichiwa.
oha'yo-.
ha'shi.
yorosi'idesuka?

Longer example using -, /, and ' — the Heart Sutra title (Maka Hannya Haramita Shingyo):

maka-/hannya-haramita-/si'n-gyo-.

Here - lengthens vowels, / splits accent phrases, ' marks the pitch drop in si'n, and . ends the sentence.

Vowel elongation counts toward the 127-byte speech limit. The GUI shows the length after adding vowel dashes and the maximum Vowels setting for each phrase. If the result is too long, reduce Vowels to the suggested value or split the text into shorter valid phrases in separate slots. Formatting FRAM cannot increase this limit.

For example, kanji-zaibo-sa-gyo-jin/hannya-ha-ra-mi-ta-ji-/sho-kengo-onkaiku-do-/issaiku-yaku. is 81 bytes with 29 lowercase vowels. Vowels 1 produces 110 bytes; Vowels 2 produces 139 bytes and cannot play. The maximum for that phrase is 1.

Save stores the original, unexpanded phrase. Play uses the saved slot; unsaved edits are marked as drafts. Before Speak or Play, the GUI sends the dial settings to the board. An over-limit request is blocked with a specific warning; the Vowels setting and phrase are never silently changed.

Full Heart Sutra as twelve phrases (each under 127 bytes before elongation). Check each phrase’s Vowels limit before playback. Paste into a RAM/FRAM bulk-fill box, one line per slot:

maka-/hannya-haramita-/si'n-gyo-.
kanji-zaibo-sa-gyo-jin/hannya-ha-ra-mi-ta-ji-/sho-kengo-onkaiku-do-/issaiku-yaku.
sha-ri-si-/sikifu-i-ku-/ku-fu-i-siki/sikisokuze-ku-/ku-sokuze-siki/jyu-so-gyo-shikiyaku/bu-nyo-ze-.
sha-ri-si-ze-/sho-ho-ku-so-/fu-sho-fu-metu/fu-ku-fu-jyo-/fu-zo-fu-gen.
ze-ko-ku-chu-/mu-siki/mu-jyu-so-gyo-shiki/mu-genni-bi-zessinni-/mu-sikisho-ko-mi-sokuho-/mu-genkainaisi-/mu-i-sikikai.
mu-mu-myo-yaku/mu-mu-myo-jinnaisi-/mu-ro-si-yaku/mu-ro-si-jin/mu-ku-shu-metudo-/mu-ti-yaku/mu-toku.
i-mu-sho-tokuko-/bo-daisatta-e-/hannya-ha-ra-mi-ta-ko-.
sinmu-ke-ge-/mu-ke-ge-ko-/mu-u-ku-fu-/onri-issai/tendo-mu-so-/ku-gyo-ne-han/sanze-sho-butue-/hannya-ha-ra-mi-ta-ko-.
tokua-nokuta-ra-/sanmyakusanbo-daiko-ti-/hannya-ha-ra-mi-ta-.
ze-daijinshu-/ze-daimyo-shu-/ze-mu-jyo-shu-/ze-mu-to-do-shu-/no-jo-issaiku-/sinjitufu-ko-.
ko-setuhannya-ha-ra-mi-ta-shu-/sokusesshu-wa'tu.
gya-te-/gya-te-/ha-ra-gya-te-/haraso-gya-te-/bo-ji-sowaka-/hannya-sin-gyo-.

Tips:

Serial speech — the “what”

  1. Open index.html.
  2. Click Select port and choose the Kraftor USB serial device.
  3. Confirm the readout shows the Kaiwa model and chip ID when reported.
  4. Type phonetic text and click Speak (or press Enter).

Plain serial lines are spoken immediately at 115200 baud. Before Speak, the GUI also sends !VOICE so speed, pitch, accent, and vowel elongation match the dials.

Workflow: serial carries the phrase content; MIDI shapes the voice and triggers stored slots.

MIDI — the “how” and “when”

  1. Click Connect MIDI and allow access if prompted.
  2. Select the MIDI output and channel that match the board DIP switches.
  3. Move the voice dials, or play notes to trigger stored RAM/FRAM slots.
MIDI input Result
Notes 28–47 Play RAM slots 0–19
Notes 48–127 Play FRAM slots 0–79
CC 1 Speed (maps to 50–300)
Pitch bend Pitch register (bend up = higher voice)
CC 2 Accent (0–255)
CC 3 Vowel elongation (0–6 - after each aeiou)

FRAM slots 80–99 stay editable over serial but have no MIDI note. If the chip is busy, the firmware replies !ERR busy; use !STOP to interrupt.

Identify Serial & Identify MIDI

When several Kraftor boards are connected, Chrome does not reliably pair a Web Serial port with a Web MIDI output. Use the identify buttons to hear which physical board each connection reaches.

RAM clears at boot, so the MIDI identify phrase lasts only for the current session.

Voice controls

Dials show AquesTalk parameters. Turning Pitch up raises the voice; the numeric readout still shows the chip register (lower register = higher voice). Pure MIDI pitch-bend already follows musical direction.

GUI control Range MIDI Serial
Speed 50–300 CC 1 !VOICE speed pitch accent vowels
Pitch 0–254 Pitch bend
Accent 0–255 CC 2
Vowels 0–6 CC 3

Defaults match firmware: speed 80, pitch 64, accent 100, vowels 0.

Presets: Default, Fast, Slow, High, Low, Drawl. Random invents a new voice; Reset to default restores the firmware defaults.

MIDI channel DIP switches

Switches are read at startup. Move a switch toward its ON marking to enable it. DIP1 = 8, DIP2 = 4, DIP3 = 2, DIP4 = 1. Set the channel to match the GUI, then reset or power-cycle the board. All OFF selects Omni (every channel).

Mode DIP1 (8) DIP2 (4) DIP3 (2) DIP4 (1)
OmniOFFOFFOFFOFF
Channel 1OFFOFFOFFON
Channel 2OFFOFFONOFF
Channel 3OFFOFFONON
Channel 4OFFONOFFOFF
Channel 5OFFONOFFON
Channel 6OFFONONOFF
Channel 7OFFONONON
Channel 8ONOFFOFFOFF
Channel 9ONOFFOFFON
Channel 10ONOFFONOFF
Channel 11ONOFFONON
Channel 12ONONOFFOFF
Channel 13ONONOFFON
Channel 14ONONONOFF
Channel 15ONONONON

RAM and FRAM sentences

On connect, the GUI learns the bank layout from !INFO?.

Use Reload from board, Save all changed, per-slot Play, and bulk paste fill. Phrase length is capped at 127 bytes for AquesTalk even if an older SAM bank used longer text.

Format FRAM when changing firmware

Kaiwa firmware 1.0.2 and newer preserve unrecognized FRAM data at startup. A detected chip with an unrecognized or unreadable bank shows format required; slot editing and playback stay disabled.

Back up existing data using its original firmware first. Then open FRAM Sentences → Format FRAM… and confirm. This permanently erases the entire FRAM, including VAX/SAM sentences and settings and unsaved FRAM edits in the GUI. RAM sentences and voice settings are kept.

Keep the board powered and connected while the firmware clears and verifies the chip. The GUI then checks readiness and reloads 100 empty slots. If it cannot confirm success, reconnect to check the bank before retrying. The button requires Kaiwa firmware 1.0.2 or newer.

SAM shares Kaiwa’s storage layout, but SAM text may need to be rewritten as AquesTalk phonetics. VAX uses a different bank format and cannot be read by Kaiwa.

Terminal users can explicitly erase and initialize FRAM with !FORMAT F KAIWA. Success replies !OK FORMAT F. !INFO? reports FRAMREADY=0 or FRAMREADY=1; unready slot commands return !ERR format-required.

Useful serial commands

!INFO?
!VOICE?
!VOICE 80 64 100
!VOICE 80 64 100 2
!STOP
!SET R 0 konichiwa.
!PLAY R 0
!DUMP R
!SET F 0 ohayo-.
!PLAY F 0
!DUMP F

!VOICE arguments: speed (50–300), pitch (0–254), accent (0–255), optional vowel elongation (0–6). Omit the fourth value to leave elongation unchanged.

Skins

The skin menu only changes the look. The choice is remembered in the browser.