A highly efficient, real-time text-to-speech system deployed on CPUs
ai.facebook.com
ai.facebook.com
https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-...
to be disturbing and without much added value. (Such as used with games like Jeopardy.)
If used, the application of these tags needs to be both meticulous in its proper context, somewhat non-deterministically applied, and with randomized prosody. Repeated usage of the same overstated emotive content is annoying and unnatural (worse than a "flat" presentation) and only serves to underscore the underlying inflexible conversational content.
Who wouldn't want a door that is eternally cheerful about opening up for you? Or a paranoid android?
I'm visually impaired, and I often use a screen reader when browsing the web. Here's my favorite voice to use with a screen reader:
I could not comprehend that. I tried a few times. IIRC, people can learn to "speed hear".
Make me think of the Star Trek TNG Bynars meets the FEDEX speed talker.
Also, I think speech synthesizers can do a more consistent job of enunciating at high speed than humans can. I didn't quite understand everything the FedEx speed talker was saying.
1. tone has a different valence than what the subject matter requires ('Sure thing! The funeral home number is...'), which reminds you of and amplifies negative feelings
2. tone is used to get something from you, which makes you feel manipulated
3. tone is uniformly applied, which through repeat exposure makes the world feel false
Totally agree that randomized prosody would help aid in making assistants more natural; tempo and rhythm don't have as much emotional weight.
I'm not sure explicit markup is the right way to approach the problem, given its lack of understanding of user context and state of mind, and the likelihood developers execute poorly. It feels like a solution at the wrong level of abstraction... getting in sync with a user's emotions is a pretty high bar.
These Alexa voices are amazing.
I recently got addicted to podcasts and want to branch into audiobooks. Alas, most narrators' voices drive me nuts. Especially the free content I've found.
I now think I'd quite like the Australian accents for consuming ebooks via TTS. It's both familiar enough and different enough that it somehow bridges my own uncanny valley.
(FWIW, I speak PNW English, allegedly neutral for North Americans.)
It just occurred to me that my hangup might be fiction vs non-fiction. Fictional readings might bug me in the same way the cartoons of Garfield and Dilbert bug me; their voices don't align with my imagination.
I've powered thru a handful of biographies (eg Robert Caro's The Power Broker) and got a lot out of them. I only cringed when someone affects a different voice for written quotes.
Whereas each time I tried a Mark Twain audio book, I wanted to kick a puppy.
I used to read a lot to my kid (and other relations). But I really didn't like those books on tape. (Maybe because no one ever read to me, sniff.)
Thanks again. I love this (being uncomfortable). Now I'm gonna push myself to finish some fiction audiobooks. See if I can get into the proper frame of mind.
In order to achieve modest improvements in dictation we're throwing entire GPU arrays at the problem. What happened in the middle? Was there really no room for improvement until we went full AI?
You can also combine the linear and nonlinear approaches. LPCNet uses a bit of each, for example: a linear lpc prediction, which is then corrected by a neutral net.
The different systems (klatt, MBROLA, etc.) build on these basic techniques. The *OLA systems are more space intensive, as they need more of the audio data to synthesize the voice, but tend to result in more natural voices.
The other complexity is how the individual phonemes (building blocks of speech) are stored. Different languages and accents have different sets of phonemes, so more complex languages require more data. Systems like MBROLA store the data as diphones (from the mid-point of the first phoneme to the mid-point of the second), to make it easier to join the phonemes. There are more diphones, although not all combinations are in a given language and accent.
This data is controlled by different prosodic parameters (e.g. pitch and duration). Neural nets can be used to control these parameters, or techniques like decision trees and probabilistic models.
IIUC, there are two approaches to neural nets when using audio generation: 1) generate the LPC/formant parameters; 2) generate the audio directly. These can either operate on phonemes, or on the text directly. Operating on the text directly limits the voice to a particular language and accent, but potentially allows the neural net to infer pronunciation rules itself.
Hmmmm.... In my experience, for (neural) TTS the dominant option is to have one model to generate a melspectrogram from the text (handling prosody) and a second model for synthesizing samples from the melspectrogram. (Tacotron, Lyrebird, and this Facebook group are all doing this.) There's certainly research projects on going directly from text to samples, but it's not the currently winning strategy... Maybe eventually, though. The Text->Mel portion specializes the prosody and pronunciation problem, and provides a nice place to add extra conditioning.
On the vocoder side: LPC, F0, etc can all be estimated from a reasonably sized melspectrogram; for the most part, these neural models are just letting the big vocoder model handle all of these things which are traditionally (fragile!) subtasks. The question is which "classical" parts are both cheap and reliable: you can compute these on the side and lighten the neural network's burden. LPC is great for this.
Also, the original MacinTalk sounded a lot better if you fed it phonemes instead of text. It didn’t know how to pronounce that many different words, and wasn’t really good at making the right choice when the pronunciation of a word depends on its meaning.
For example, if you gave it the text “Read me”, it always pronounced “Read” in the past tense. That always seemed the wrong bet to me, and I would think the developers had heard that, too, but apparently, fixing it was not that simple.
I also think it didn’t know to pronounce “Dr” as “Drive” or “Doctor”, depending on context, or “St” as “Saint” or “Street”, to mention a few examples, and probably was abysmal when you asked it to speak a phone book, with its zillions of rare names (back in the eighties, that’s an area where AT&T’s speech synthesizers excelled, I’ve been told)
And that’s just the text-to-phoneme conversion. The arts of picking the right intonation and speed of talking are in a whole different ball park; they require a kind of sentiment analysis.
chee-hoo-ah-hoo-ah
But the latest neural techniques have added quite a bit of naturalness, and their computational requirements, while high, are within the reach of consumer level devices.
I think that's a little rose tinted. Classical speech synthesis was awful in comparison to this.
"How come we never go out anymore?"
I could really use a better tts for Linux.
The training data could also be considered source.
And I agree that this is of limited use if I have to access it by uploading and downloading everything from Facebook servers. Not only do I have privacy implications, but there's the need for a solid fast low latency internet connection that I can't guarantee.
Dataset is not a big problem (if you can speak, you can create your own). PyTorch is already open.
This is done pretty frequently in areas like computer vision and speech recognition, with the pre-trained weights for YOLO and Mozilla Deepspeech[0] being available for download. I'm not sure if the word "open-source" totally applies here, since as you pointed out, apart from downloading the dataset source might be tought, but OP's question might be answered by having the resulting models made publicly available with the source code of the networks they used to train and deploy it?
That's simply not true at all. Between the scale of the data and the need to label it, datasets are usually the biggest roadblock in ML.
That makes me wonder about something: would it be less computationally intensive to prove that a trained net is the result of some training data than the training procedure? A lot less? Can it be proven that there is no backdoor (supplemental training data altering the results)?
I suspect you could prove rather cheaply that the trained net weight indeed correspond to a local minima for the training data. However, there is no telling that this is the best minima that could be achieved, nor that the provided training dataset is enough to obrain that result.
[1] https://theintercept.com/2015/05/05/nsa-speech-recognition-s...