Inspiration

A parent wanted a complete school story in a familiar, expressive voice. That request exposed two problems: preserving every word in the narration, and producing a voice the listener recognizes. Family Story Studio combines Croatian and English narration, private local voice experiments, and a focused GitLab Duo review workflow.

What it does

The free public app detects Croatian or English locally, asks permission before sending text for online speech, and provides an MP3 download. Short, mixed or uncertain text needs a manual language choice. Detection does not translate or rewrite the story. The hosted app accepts up to 1,500 characters and has no microphone, reference upload or voice-conversion service.

The full local MIT studio adds passage previews, longer stories, recording controls and OpenVoice V2 tone-colour conversion. Its interface is now in English, including recording, consent, profile and output controls; Croatian and English remain supported story languages. Silero VAD 6.2.3 selects balanced speech clips for speaker estimation while preserving the full source narration and its pauses. Setup verifies pinned assets; conversion does not upload a reference or download models during processing.

The narration adapter checks completed transfers, confirmed audio bytes, normalized word-boundary sequences and readable audio. Incomplete speech fails visibly. These checks do not measure pronunciation, expression or identity.

Listening changed the direction

Playable output and passing tests initially failed the listener's expectations. A separate local Seed-VC V1 research workflow explored speaker personalization. After a 500-step adaptation and a matched comparison, the user accepted option B. This establishes acceptance of one short example, not universal voice similarity or validated complete-story conversion with that model.

The local studio offers a prepared personal-profile option for spoken clips up to 12 seconds. An original MIT adapter invokes a separately installed GPL-3.0-only companion lab. The derived Seed code retains its licence and is not bundled with the MIT application. Profiles and trusted assets are configured privately outside the checkout; missing or changed profiles stop conversion. Private recordings, derived features, personalized weights and human-voice examples remain private. The hosted service stays narration-only.

Actual GitLab Duo use

This is a Bring Your Own: Assisted entry. The public custom agent StoryVoice QA uses eight read tools to inspect the real merge request, exact head, files and CI evidence. It checks language routing, complete audio, consent boundaries, hosted limits and revision-specific tests, then proposes one verification step and waits for approval.

Its 12-action review of MR !1 found missing direct ASGI middleware tests. After approval, a separate Developer flow applied eight middleware/timeout cases and the CI dependency. The reviewer did not edit code, listen to voices, run tests or deploy. Developer flows also applied bounded prepared source changes with manifest/hash and compilation checks. Codex helped implement the application and experiments; Duo is not credited with authoring the entire existing codebase.

A fresh recorded StoryVoice QA review inspected MR !3 and exact revision 090b3cdc through eight read actions. It could read source and pipeline metadata but could not retrieve job logs, so it proposed a maintainer verification step and waited. The smoke job was then manually retried in the existing pipeline: job 17452676619 passed 145 tests in 4.433 seconds at the same revision. That completed log was inspected separately; the agent did not establish the test result or start the job. No code or deployment changed for this demonstration.

Verification and English-interface refresh

The personal-profile integration at 38b6672b passed 145 tests in GitLab pipeline 2987195054, job 17452245032. Actual Duo Developer flow 10024119 checked all 44 files byte for byte and compiled the source. An independent public download matched those files. MR !2 merged at 2c705b239e7b4cb4769c5ec57a38abafb6e38a19.

The English-interface revision 090b3cdc passed the same 145 tests locally and in GitLab pipeline 2987229452, job 17452469752, in 4.937 seconds. An independent anonymous download matched all 44 source files. MR !3 merged at 50ca6414481d6054c734d90b57a1e13e47ea3e2e, with its source branch retained. The dependency-incomplete Duo runner is not counted as a successful test environment; the passing result comes from configured CI.

The free Render demo is live at exact English-interface revision 090b3cdc49b4e8861f692881d7172f07b2224d00. Its 25 October deployment passed homepage/configuration checks, retained the correct competition source link and reported no runtime warnings or errors. Earlier English and Croatian MP3 downloads fully decoded as non-silent audio on d37b72f2; the narration behavior is unchanged. Synthetic local conversion checks separately verified source timing and no outbound connection attempts. Tests cover the application and adapter, not subjective voice likeness or Seed training quality.

The refreshed demonstration preserves the actual English local-studio workflow in its first 1:54. The GitLab section uses a labelled, chronological interval-sampled time-lapse of the fresh Duo review, followed by the manual CI retry's start and a separate inspection of its completed log. The middle of the CI run was not captured; this is not continuous footage or a recording of live test-log progression. No private human voice or accepted option B recording is included.

Provenance and boundaries

The original application was developed privately and first published as a sanitized MIT baseline on 25 October 2026 at tokicx/family-story-studio, commit 3948ea86d31b5c02b512f3a0e3b93b9218f5e6de. The competition project is a separate source copy, not a GitLab fork.

The original application, adapter and documentation are MIT. The separately published Seed-derived research source remains GPL-3.0-only with upstream notices; other components retain their own licences. Separation identifies the distributions and does not establish compatibility of every future combined distribution. Online narration sends text to Microsoft after consent. There are no paid inference calls, required API keys or automatic purchases. Longer-story personal-profile conversion still needs separate word-preservation and listening checks.

Built With

  • edge-tts
  • ffmpeg
  • gitlab
  • gitlab-ci/cd
  • gitlab-duo-agent-platform
  • gradio
  • lingua
  • openvoice-v2
  • python
  • pytorch
  • render
  • seed-vc
  • silero-vad
Share this project:

Updates

Submission history