This is the development blog for synSinger, and “synthetic singer” computer program.
What Does synSinger Sound Like?
Here’s a link to a recent rendering: Twinkle, Twinkle, Little Star
Why Develop synSinger?
While there are quite a few voice synthesis programs, I wasn’t able to find any specifically targeted to generating a singing voice. synSinger aims to help fill that gap.
I can safely say that no one is going to mistake synSinger for an actual human. However, much like programs such as VocalWriter, I hope that people find it intelligible and pleasant to listen to.
There are several goals for synSinger:
- Free: synSinger will be a free, Open Source application. (I still need to choose a license).
- Easy To Use: The primary means of inputting data into synSinger is MusicXML, a common format shared by many applications. It also supports a simple plain text format of my own design.
- Musical Intelligence: Like Sinsy, synSinger applies heuristics to generate musical output. For example, it knows how to shape a musical phrase and apply vibrato.
- American English: While there’s nothing preventing support for other languages, synSinger is currently focused on an American English accent.
Where’s Can I Find It?
synSinger is very much pre-alpha software – it’s not yet usable by the general public, and the code and executable has not yet been released.
Once it’s past beta, I’ll post it on SourceForge, although I’m considering other sites given some of the bad behavior SourceForge has engaged in in the past.
A Bit Of History
I’d initially planned on making synSinger as a sample-based application, along the lines of Vocaloid and UTAU. However, I was unable to find any good open-source pitch-shifting libraries that also did formant preservation, and I wasn’t been happy with the quality of my own routines using FFT or PSOLA.
However, the results were still lacking, especially in comparison to other programs such as VocalWriter or SoftVoice.
As of this writing, synSinger is being rewritten using spectral modeling synthesis. Whether this produces sufficiently good results remains to be seen, but the results so far are promising.
Over time, I’ve coded synSinger in quite a number of different programing languages – Java, C, and even OpenEuphoria for reasons that seemed good at the time.
Currently, it’s being coded in Lua, and it seems to run quite well with luajit.
When Will It Be Ready?
I’ve written many versions that I thought were “almost ready” over the last couple of years, but the intelligibility simply wasn’t there. What good is a singing program if you can’t tell what it’s singing? That’s the problem that synSinger faces. I’ve done rewrite after rewrite and it’s gotten incrementally better, but never quite good enough.
That said, this latest version seems to have solved quite a number of issues, and I’m hopeful the results good enough to use.
However, it’s still under constant development and far from stable. I’ve missed the deadline so many time, I’m hesitant to offer a date.