Change Speech Voice in Speech API - c#

How do we change the voice to be used from within our apps? I cannot seem to figure out what or where the default voices are for Windows 8.
I've read articles online that say that Microsoft David is MS Windows 8's latest and greatest voice, but I have a new Windows 8 Pro system and no such voice exists on my system (only Zira and some other guy).
I am awware of Select Voice which lets you use a string as the Name of the voice, but after trying about 30 different names, including David (and Dave), it throws an exception saying that voice does not exist.
I have tried InstalledVoice - but not sure how to use that.
How/where can we download different voices to be used with Windows Speech Recognition, and how do we select different voices to be used from within our code?
Also, SelectVoicebyHints() does absolutely nothing at all. I don't know why.

The SpeechSynthesizer has a GetInstalledVoices method which returns a ReadOnlyCollection of Voices installed in your system (InstalledVoice type), in order to change the synthesizer voice you should call the SelectVoice Method in which requires the voice name(String type)
SpeechSynthesizer synt = new SpeechSynthesizer();
IReadOnlyCollection<InstalledVoice> InstalledVoices = synt.GetInstalledVoices();
InstalledVoice InstalledVoice = InstalledVoices.First();
synt.SelectVoice(InstalledVoice.VoiceInfo.Name);
synt.Speak("This is how you select an installed voice");
To see what voices are installed in your computer you can see them in:
Control Painel -> Speech Recognition -> Text to Speech
You can specify more info there as well like voice speed
if you want to add more voices to your computer you should search some company like
Ivona - http://www.ivona.com/us/for-individuals/voices-for-windows/
Not sure but SelectVoicebyHints should try to selected any voice from those installed where is more alike to the specifications that you passed through the method

Related

Using Cortana's voice

I'm actually creating a homemade assistant and the default speech synthetiser (in c#) hasn't a nice voice. I would like to know if it is possible, and how, to use Cortana voice and pronunciation?
You can see how to tune Cortana's responses via this link:
https://learn.microsoft.com/en-us/cortana/skills/speech-synthesis-markup-language
And you can output text-to-speech (TTS) this way:
https://learn.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoiceoutput
You can also change the Windows default voice to Cortana:
https://superuser.com/questions/1141840/how-to-enable-microsoft-eva-cortanas-voice-on-windows-10
Does this help?

Speech Synthesis in C#

I use the speech synthesis for a simple program, and I was
wondering if there is supporting in other languages than english?
I want that the speech will be in the local language. Is it possible?
You can use SpeechSynthesizer.GetInstalledVoices to obtain a list of all available voices, together with some Culture Information. On my Windows 8.1 machine, there is a German and an English language installed. You should be able to check if there is a capable voice present with the GetInstalledVoices method.
Here is a list of the supported languages on the Microsoft Speech Platform SDK 11

Sound effects in C# Text-to-Speech

I'm using Microsoft Speech Synthesis in C# and I want to know if there is a way to add echo effects and other sound effects to the speech such that the speech appears to be happening in a live stadium or a room etc. Also, I want to use other voices for my code besides Microsoft Anna in Win 7 64 bit but all I found was ways to change voices using .cpl files but I did not find any free voices. I did find http://www.cepstral.com/en/personal/download which has free voice downloads but these are for older SAPI versions - will these create problems in the current installation? Any other sources to download free voices to be used in the code or even ways to make other voices such as Sam (old windows), David (Win 8) usable?
I'm not sure about specific effects but you can choose a voice by SelectVoice(), or SelectVoiceByHints(gender, age, position, locale). Of course you can also set the rate. So you can do quite a few effects using just the Windows Speech Synthesizer. MSDN wss

change the default voice on windows 7 via C# code

I need to change the windows 7 current default voice (Microsoft Anna and an extra German voice is installed) via C# code.
As I am a beginner programmer, it will be difficult for me to find it out on my own.
Any ideas how I can achieve it? Thank you all in advance for the replies!
The Windows 7 Audio API includes the SpeechSynthesizer class, you could call for example the SelectVoice method:
Use the GetInstalledVoices method and VoiceInfo class to obtain the
names of installed text-to-speech (TTS) voices that you can select. To
select a voice, pass the entire contents of the Name property as the
argument for the SelectVoice method. The SpeechSynthesizer object
selects the first installed voice that contains name in the voice's
VoiceInfo.Name property. The SpeechSynthesizer performs a
case-sensitive, substring comparison to determine if the voice matches
the name.
Edit: I found some sample code to get you started.
Windows 7 Default Voice (changing) Utility – Path:
Windows
Syswow64
Speech
Speechux
sapi.cpl
You can change the speed, volume, and pitch of the voice Narrator uses. and it wont need any C# coding...
Open Narrator by clicking the Start button , clicking All Programs, clicking Accessories, clicking Ease of Access, and then clicking Narrator.
Click Voice Settings, and then make any of the following adjustments:
To select a different voice, click the voice you want to use in the Select Voice box.
For a faster voice, select a number in the Set Speed list. The higher the number, the faster the voice.
For a louder voice, select a number in the Set Volume list. The higher the number, the louder the voice.
For a higher-pitched voice, select a number in the Set Pitch list. The higher the number, the higher the pitch. A higher-pitched voice can make the voice easier for some people to hear.
Narrator is not available in all languages, so if the steps above do not work, Narrator is not available for your language.

Speech to text on windows server 2008 with c# and supports multilanguage?

I'm looking for speech (wave files) to text on windows server 2008 (or win server 2008 r2) using c# (at least an api that i can call from c#) that supports multilanguage.
As far as i know i can't use .net speech (sapi) because it works only on vista \ windows 7.
I can't use Microsoft Speech Platform because it not supports all the languages i need (as far as i checked there is no Hebrew (he) support).
It can't be a web based service (i need it on my server).
I'm looking for something that can be used in commercial software and i'm also willing to pay for a third party product.
Can you please help me with that?
Thanks
You have text-to-speech listed as a tag but the description sounds like speech recognition. If I understand what you want to do it is to take a wav file with speech in it and convert it too text. Actually this is not even normal speech recognition because most of the speech reco systems work on targeted speech input that use grammars to restrict the search space that the speech engine has to use. I think what you are describing is automatic translation or transcription, akin to what Google Voice does to your voice mail messages when it sends you a text translation in an email. This is a much more difficult problem and the state-of-the-art is not that advanced right now. Most of these solutions are offered as services and the best ones still use human translators when the speech recognition confidence rate is low. I think the leader in this area is Nuance. I would check with them for a solution. I know they recently bought out a company that provides this automated transcription service and perhaps they now offer it as a product. They are also a leader in transcribing doctors orders/findings automatically to text with their product Dragon Naturally Speaking.

Categories

Resources