Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Phonetic characters to speech

Tags:

c++

c

c#

.net

vb.net

My purpose is that to be able to let my application to talk in less popular language (for example Hokkien, Malay, etc). My current approach is using recorded mp3.

I want to know whether there is 'phonetic characters to speech' engine exists for .net or any platform?

Phonetic characters here just like the phonetic entry in paper dictionary. Any idea?

like image 489
Predator Avatar asked May 25 '11 10:05

Predator


People also ask

What is phonetics in speech?

Phonetics is the study of the sounds of speech. It is concerned with the physical properties of speech sounds or signs (phones): their physiological production, acoustic properties, auditory perception, and neurophysiological status.

What is the phonetic alphabet from a to Z?

Alfa, Bravo, Charlie, Delta, Echo, Foxtrot, Golf, Hotel, India, Juliett, Kilo, Lima, Mike, November, Oscar, Papa, Quebec, Romeo, Sierra, Tango, Uniform, Victor, Whiskey, X-ray, Yankee, Zulu.


2 Answers

What you need is a Large Vocabulary TTS Engine. Microsoft has a speech SDK that allows you to say as you type among other things, and also the Windows SAPI (Speech API - not sure if the SDK and API are the same things). I know that they do have male and female voices for English, but maybe not for other languages such as Malay (where there may not have been much of a market as yet). You might want to take a look at Festival Project at CMU. They usually have a lot of voices in different languages, but some of the less known ones may not be as well developed as the ones for English.

Further update:
Check the MBROLA site out. It is an open-source project for developing multi-lingual Large vocab TTS engines and they also have a malay extension. I do not know how good it is though. I tried out the Hindi one and feel that there is a lot of work that still needs to be done.

Also, check out the BabelFish site. They have links to a lot of free TTS engines that should have some support for Malay.

Update 3: I do not know if this will suit your purpose, but if the text that the application must speak out is low, then you can try concatenative speech synthesis over a limited vocabulary too. Record fragments of sentences in Malay (or any other language) and pass the output of your program to your own limited vocab tts engine where you create the output. One example could be (in English): " was the most valuable player." Here, "was the most valuable player" becomes one fragment while the "Player X" can be changed at will. This, if it serves your purpose, should work well.

like image 126
Sriram Avatar answered Sep 18 '22 13:09

Sriram


Here is the VB.NET code:

'create the object. This object will store your phonetic 'characters'
Dim PBuilder As New System.Speech.Synthesis.PromptBuilder

'add your phonetic 'characters' here. Just ignore the first parameter.
'The second parameter is your phonetic 'characters'
PBuilder.AppendTextWithPronunciation("test", "riːdɪŋ")

'now create a speaker to speak your phonetic 'characters'
Dim SpeechSynthesizer2 As New System.Speech.Synthesis.SpeechSynthesizer

'now actually speaking. It will speak 'reading'
SpeechSynthesizer2.Speak(PBuilder)

And here is the converted C# code:

//create the object. This object will store your phonetic 'characters'
System.Speech.Synthesis.PromptBuilder PBuilder = new System.Speech.Synthesis.PromptBuilder();

//add your phonetic 'characters' here. Just ignore the first parameter.
//The second parameter is your phonetic 'characters'
PBuilder.AppendTextWithPronunciation("test", "riːdɪŋ");

//now create a speaker to speak your phonetic 'characters'
System.Speech.Synthesis.SpeechSynthesizer SpeechSynthesizer2 = new System.Speech.Synthesis.SpeechSynthesizer();

//now actually speaking. It will speak 'reading'
SpeechSynthesizer2.Speak(PBuilder);
like image 22
user774411 Avatar answered Sep 20 '22 13:09

user774411