pviotti/sayit
53.2
Adequate · 3 October 2026
227
lines of production code
F#
primary language
2
measurements over time
What this system is
SayIt is a command-line interface tool that converts text to speech using Azure Cognitive Services. It allows users to synthesize audio from standard input or arguments, supporting various neural voices and output formats like MP3 and PCM. The system includes configuration management for default settings and comprehensive unit testing to ensure reliability.
Features
Initial project structure and documentation
This release establishes the foundational project structure for SayIt, including the addition of a LICENSE file, a comprehensive README with setup and usage instructions, and developer notes regarding .NET packaging and CoreRT limitations. The solution file has been renamed to SayIt.sln, the main project folder has been standardized to 'SayIt', and a new test project 'SayIt.Tests' has been added to the solution. Additionally, the .gitignore file has been updated to exclude common IDE and coverage artifacts.
(repo-wide) · high confidence
Initial release of SayIt CLI for Azure Speech synthesis
This change introduces the SayIt command-line tool, allowing users to convert text to speech using Azure Cognitive Services. Users can provide input via command-line arguments or standard input, select from a set of neural voices (e.g., en-US-GuyNeural) and output formats (e.g., MP3, PCM), and configure default settings via a setup wizard. The tool supports listing available voices and formats, saving configuration to a file, and handling errors such as connection or authentication failures.
SayIt · high confidence
Removals
Removal of hardcoded Azure Speech CLI entry point
The \src/Program.fs\ file, which previously served as the application's entry point for generating speech via the Azure Cognitive Services Speech SDK, has been removed. This change eliminates the hardcoded logic that read Azure subscription credentials from environment variables and used a fixed voice (\en-US-GuyNeural\) to synthesize text input into audio.
src · high confidence
Test coverage
Added unit tests for version output, voice shorthands, and format IDs
Added a new test suite in the SayIt.Tests project that verifies the application prints the correct version string and exits with code 0 when the --version flag is used. The tests also validate that voice type shorthands correctly correspond to their full voice IDs and that format type shorthands match the expected format ID patterns.
SayIt.Tests · high confidence
Dependencies
Upgrade to .NET 10 and restructure project layout
The application has been upgraded from .NET Core 2.2 to .NET 10, requiring a runtime update for users. The project structure has been reorganized: the main library has been moved from the \src/\ directory to \SayIt/\, and a new test project \SayIt.Tests\ has been added. Additionally, the main project now includes several new source files (\Utils.fs\, \Formats.fs\, \Voices.fs\, \Config.fs\) and dependencies (\Argu\), while the test project utilizes updated versions of \xUnit\, \FsUnit\, and \coverlet\.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 53 → 53 (+0.0)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 73 → 77 (+3.9)
- Maturity 34 → 34 (+0.0)
- Readiness 61 → 61 (+0.0)
- Security 78 → 74 (-4.3)
New (1)
- Documentation: no usage examples (README.md)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
pviotti/sayit was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit e3d7405b237d605df2e4efb831654a8f51753bc4 — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.