openvibers/openvibe.chat Commits

2fat's one-of-a-kind voice: Bass Boss (voice_twofat) (#132)

OP OpenVibers committed 22 days ago Β· 79d34a10e6 Β· 2 files, +6 βˆ’0

Changes

ddiff --git a/server/chat/tts-engine.js b/server/chat/tts-engine.js
iindex bff5ca0..7bcce7d 100644
---- a/server/chat/tts-engine.js
++++ b/server/chat/tts-engine.js
@@@ -97,6 +97,8 @@ const VOICE_CATALOG = {
gc_journey_oracle: { name: 'JourneyOracle', emoji: 'πŸ—ΊοΈ', engine: 'google-cloud', rarity: 'mythic', tier: 6, cloudVoice: { name: 'en-US-Journey-F', gender: 'FEMALE', locale: 'en-US' } },
// One of a kind (2026-10-22): Josh's Vegas Announcer, a deep, unhurried Neural2 voice.
voice_vegas: { name: 'VegasAnnouncer', emoji: 'πŸŽ™οΈ', engine: 'google-cloud', rarity: 'mythic', tier: 6, cloudVoice: { name: 'en-US-Neural2-J', gender: 'MALE', locale: 'en-US', pitch: -4.0, speakingRate: 0.9 } },
++ // One of a kind (2026-10-23): 2fat's Bass Boss, the deepest Neural2 voice there is (pitch -8).
++ voice_twofat: { name: 'BassBoss', emoji: 'πŸŽ›οΈ', engine: 'google-cloud', rarity: 'mythic', tier: 6, cloudVoice: { name: 'en-US-Neural2-D', gender: 'MALE', locale: 'en-US', pitch: -8.0, speakingRate: 1.0 } },
gc_journey_whisper: { name: 'JourneyWhisper', emoji: 'πŸ—ΊοΈ', engine: 'google-cloud', rarity: 'mythic', tier: 6, cloudVoice: { name: 'en-US-Journey-O', gender: 'FEMALE', locale: 'en-US' } },
// ── Amazon Polly voices ───────────────────────────────────
ddiff --git a/test/tts-voices.test.js b/test/tts-voices.test.js
iindex 3033291..4da8747 100644
---- a/test/tts-voices.test.js
++++ b/test/tts-voices.test.js
@@@ -57,6 +57,10 @@ const voiceOf = (r) => Buffer.from(String(r.audio), 'base64').toString().replace
assert.deepStrictEqual([vegas.engine, vegas.voiceId, voiceOf(vegas)], ['google-cloud', 'voice_vegas', 'en-US-Neural2-J']);
const sent = JSON.parse(asked[0].body).audioConfig;
assert.deepStrictEqual([sent.pitch, sent.speakingRate], [-4, 0.9], 'its own pitch and rate reach Google');
++ // 2fat's Bass Boss (2026-10-23): one of a kind too, deeper still.
++ const boss = await tts.synthesize('Bangers only', 'voice_twofat', '2fat');
++ assert.deepStrictEqual([boss.engine, boss.voiceId, voiceOf(boss)], ['google-cloud', 'voice_twofat', 'en-US-Neural2-D']);
++ assert.strictEqual(JSON.parse(asked[asked.length - 1].body).audioConfig.pitch, -8);
const plain = await tts.synthesize('hello', 'gc_studio_m', 'x');
assert.deepStrictEqual(JSON.parse(asked[asked.length - 1].body).audioConfig, { audioEncoding: 'MP3', speakingRate: 1, pitch: 0 }, 'other Google voices keep the defaults');
assert.strictEqual(voiceOf(plain), 'en-US-Studio-Q');