Project origin

Text2LPC is a web application designed to convert French text into Cued Speech keys (LPC — Langue Parlée Complétée), a visual system that makes spoken language accessible to deaf and hard-of-hearing people by combining lip-reading with hand positions near the face.

💡 What is LPC / Cued Speech?

Langue Parlée Complétée (LPC) pairs hand positions near the face with lip movements. Each syllable is encoded by a hand-mouth combination that removes all ambiguity from lip-reading alone. It is an essential tool for the education and communication of deaf children.

The project was created to support Fondation A Capella, active in French-speaking Switzerland in assisting deaf and hard-of-hearing people. The tool allows professionals and families to transform a sentence into a sequence of LPC images usable in educational settings.


First implementation at Antistatique

Text2LPC was originally developed by Steven Avelino as part of his final thesis project, during an internship at Antistatique agency in Lausanne. Commissioned by Fondation A Capella, this first version laid the technical foundations of the application.

2019 — Design

Final thesis project

Steven Avelino develops the first functional version of Text2LPC at Antistatique, using Laravel 5.8, Vue.js and a Python integration for phonetic conversion.

2019 — Deployment

Initial production release

The application is deployed and made accessible to Fondation A Capella. The tech stack includes PHP 7.3, Laravel 5.8, Vue.js 2, Bootstrap 4, and a Python/Phonemizer backend for text-to-phoneme conversion.

Late 2019 — Handover

End of mandate

The internship and Antistatique mandate conclude. The application is functional but no ongoing maintenance is planned.

Original architecture

// Original tech stack (2019)

; Backend
PHP        7.3.1
Laravel    5.8
MariaDB    10.1

; Frontend
Vue.js     2.5.17
Bootstrap  4.0.0

; Phonetic conversion
Python     3.5+
Phonemizer 1.0.1   ← espeak-ng 1.49.2 backend

Period without maintenance

After December 2019, the application received no further maintenance. No security updates, no bug fixes, no feature improvements — for over four years.

⚠ Consequences of abandonment

The progressive obsolescence of the tech stack — PHP, Laravel, and Python dependency versions — made the application increasingly difficult to run reliably and securely. Known vulnerabilities in Laravel 5.8 and PHP 7.3 (both end-of-life) posed a growing risk.

This situation limited the exploitation of Text2LPC even though the tool addresses a need that remains very much alive for the LPC community and Fondation A Capella's activities.

  • PHP 7.3 — security support ended December 2021
  • Laravel 5.8 — support ended January 2020
  • npm dependencies — known unpatched vulnerabilities
  • Server environment — outdated deployment configuration

Takeover by d-side solutions Sàrl

To give the application a second life, d-side solutions Sàrl took over the project under a new repository, with the explicit goal of bringing it up to date technologically and making it usable again for Fondation A Capella.

  • Technology upgrade — migration of PHP, Laravel, and all dependencies to maintained versions.
  • Development environment modernization — Docker containerization for reproducibility.
  • Current standards compliance — long-term stability, security, and maintainability.
  • Data model enrichment — new tables for positions and mouths, multi-library support.
  • Test suite maintenance — PHPUnit functional and unit tests verified and adapted.

Technical details of the modernization

Backend migration

// Tech stack migration

PHP 7.3.1 8.2+
Laravel 5.8 10.10
PHPUnit old 9.6.15

Text → LPC conversion pipeline

The core of the application relies on a multi-step processing chain that transforms French text into usable LPC images:

// Conversion pipeline

French text
user input
Phonemes
Python / Phonemizer
C+V pairs
Laravel / LPCService
LPC images
key + position + mouth

// Python ↔ PHP integration

// Laravel calls Python via Symfony Process
$process = new Process(['python3', 'phonemize.py', $text]);

// Phonemizer (espeak-ng backend) returns phonemes
"bonjour""b ɔ̃ ʒ u ʁ"

// LPCService combines consonants + vowels into keys
"b+ɔ̃"key 1, position 3

Application architecture

// Laravel MVC architecture

; Business logic services
LPCService       ← text → LPC key encoding
PhonemeService   ← Python/Phonemizer interface

; Data models
LibraryKeys, Positions, Mouths
UserLibraries (public / private)

; Features
Auth       ← OAuth2 (a-capella.ch) + standard
PDF        ← DomPDF for card printing
Images     ← Intervention Image, public/private upload

Tests

The PHPUnit test suite covers the critical aspects of LPC conversion:

  • EncodeLPCTest — 8 functional test cases validating the full text → LPC chain
  • TransformTest — phonetic transformation validation
  • GetPositionNameTest / GetKeyNameTest — key ↔ position mapping
  • ConsonantVowelTest — consonant-vowel pairs and Unicode edge cases

Development environment

// Docker Compose — 2 services

acapella-web:
  # PHP 8.2 + Apache + Python 3 + Node.js
  ports: 8181:80

acapella-db:
  # MariaDB 10.1
  ports: 9999:3306

# Makefile commands
make setup   ← full installation
make build   ← build containers
make up      ← start services
make test    ← run PHPUnit

Value delivered

The entire journey — initial design as a thesis project, implementation during an internship at Antistatique, then modernization by d-side solutions Sàrl — has made it possible to transform a pedagogical idea into a concrete, sustainably usable tool for Fondation A Capella.

This collective effort provides the foundation with a digital instrument tailored to LPC practice, one that can continue to evolve and be integrated into their support and training activities.

Summary

Text2LPC illustrates how an academic project can be made sustainable through rigorous technical stewardship. The migration from PHP 7.3 / Laravel 5.8 to PHP 8.2 / Laravel 10, Docker containerization, and a maintained test suite give Fondation A Capella a reliable and extensible tool.

The application continues to serve its original mission: making Cued Speech accessible to as many people as possible, in service of inclusion for deaf and hard-of-hearing individuals.

Have an aging web project that deserves a second life? Contact us.

LD

Luc Demierre

Founder & IT Consultant — d-side solutions Sàrl, Fribourg

Specialized in IT architecture, systems security and e-commerce integration for Swiss SMEs. Founder of d-side solutions Sàrl since 2022.