## Goal The goal is to write a text to speech program, where all sounds are purely created through mathematical equations, in order to create my own true 100% machine speech synthesis. ## Inspirations These inspirations include some newer products and some very old software solutions which are practically impossible to obtain and as such have been almost completely forgotten. ### [MUSIC-N](https://en.wikipedia.org/wiki/MUSIC-N) It was used to create [this famous piece of music](https://www.youtube.com/watch?v=41U78QP8nBk). If my guess is correct, this should be made using Formant synthesis. Since this is a product of Bell Labs and because of it's age, it probably lives in an archive somewhere or maybe has even been lost. ### [gnuspeech](https://savannah.gnu.org/projects/gnuspeech) It makes use of Articulatory synthesis and is an open source project. Sadly it only runs on extremely old versions of Mac OS X and on the BSD-based NeXTSTEP, which is closed source and as such practically impossible to get. These factors have led to gnuspeech being unmaintained and mostly forgotten. ### [UTAU](http://utau2008.web.fc2.com/) I really like Utane Uta (Defoko) and Adachi Rei. Both of them are completely synthesised and make use of no Voicebanks. ### [Vocaloid](https://www.vocaloid.com/en/) Not the kind of speech synthesis I am going for, but I still really like them. ### SAM I currently cannot easily figure out which type of synthesis it is even after taking a short look at the source code of [this newer implementation](https://github.com/s-macke/SAM). My current guess is, that it is using some form of Concatenation synthesis, since it is combining phonemes to create words. ## Planning ### Spoken Language The language is one of the most important aspects of this program and as such needs to be carefully chosen. The possible languages from which I wanted to choose from where German, English or Japanese. In order to help me which of those three languages I should choose, I came up with these requirements. - Small alphabet in order to minimise the amount of work required - Individual letters stitched into words together should require no further processing in order to be understandable - The words need to be understandable even without proper or any emphasising at all Since I speak German and English fluently and they have a relatively small alphabet, I chose to do both, but I am going to start with English first. ### Programming Language There are a many options, but to help narrow it down, I came up with a few requirements. - should be functional (Haskell for example) or procedural (C for example) - compiles to binary (should require no interpreter, so no python or java for example) ### What type of speech synthesis When I looked on [Wikipedia](https://en.wikipedia.org/wiki/Speech_synthesis#Synthesizer_technologies) I saw that there are multiple types of speech synthesis. Since I am restricting myself to pure machine synthesis, I can only choose between two types. - Formant synthesis - Articulatory synthesis I really wanna do both, but I am going to start with Articulatory synthesis. I am only doing it first, because it seems way cooler to me.