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
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
user input
Python / Phonemizer
Laravel / LPCService
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
Library → Keys, Positions, Mouths
User → Libraries (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.
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.