System.Speech.Synthesis CultureInfo for exe - c#

I'm trying to use System.Speech.Synthesis; with french female voice, but still got english male.
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult, 0,
new System.Globalization.CultureInfo("fr-FR"));
synth.Speak("bonjour le monde");
I did not installed nothing yet, just added reference system.speech, so now I found this to download and install:
https://www.microsoft.com/en-us/download/details.aspx?id=27224
but first of all I need to know if I can use it with different languages for executable for other users, not sure how it works with different languages
also I need to install
https://www.microsoft.com/en-us/download/details.aspx?id=27225
and there is two:
For the Runtime, please download the Microsoft Speech Platform - Runtime 11
x86_SpeechPlatformRuntime\SpeechPlatformRuntime.msi
and
x64_SpeechPlatformRuntime\SpeechPlatformRuntime.msi
which says:
The Microsoft Speech Platform Runtime contains both a managed (.NET) and native (COM) API for developing Server based speech applications.
So if my system 62-bit, which I have to install to make it available for other users, or I have to install it only according to my system x86
and another:
For the Software Development Kit, please download the Microsoft Speech Platform - SDK 11
https://www.microsoft.com/en-us/download/details.aspx?id=27226
This software development kit contains the documentation, development resources, tools and samples for development of speech applications that utilize the Microsoft Speech Platform Runtime 11.
So what the difference if I want use it for application executable?

Related

Change Voice in SpeechSynthesizer

I tried to change the speaker, but i dont have enlisted all installed speakers (George, Susan, Jakub) in SpeechSynthesizer class, on the other hand I have one, that is not installed at all (Zira).
What is happening here ? Can i somehow add specific speaker into my project (for example as .dll or something) to be not dependent on computer language/region ?
UPDATE
As #Jimi mentioned, System.Speech and Microsoft.Speech are different and to avoid confusion, using only one of them should be the right choice.
For System.Speech
Go to Settings/Region and Language/Add Language
From Settings of the language, download Speech
For example Helen is in en_US package. So, the additional Speech should be downloaded by adding English (United States) language.
For Microsoft.Speech
Download a speech from the link below
Add a reference to the
Microsoft.Speech DLL in the project
Microsoft Speech Recognition and Text-to-Speech engine data files can be downloaded from the link below;
Speech Recognition and Text-to-Speech Engines for Microsoft supported Languages https://www.microsoft.com/en-us/download/details.aspx?id=27224
For further information:
Microsoft Speech Programming Guide
https://learn.microsoft.com/en-us/previous-versions/office/developer/speech-technologies/hh378466(v%3doffice.14)
SpeechSynthesizer.SelectVoice Method
https://learn.microsoft.com/en-us/previous-versions/office/developer/speech-technologies/dd167624(v%3Doffice.14)
System.Speech.Synthesis Namespace
https://learn.microsoft.com/en-us/dotnet/api/system.speech.synthesis?view=netframework-4.7.2

On-reader applications for Impinj Revolution

I'm trying to start developing RFID-reader apps. I've read that in the past you had to do it in C or C++, but nowadays there's a way to do it in .net (C# for ex.). I downloaded ETK, Documents and tools and latest SDK but I didn't find information about developing embedded apps in C# nor compiling .net solutions for arm processor (cause it's supposed to be executed by the reader).
According to Impinj Support Portal they have GCC based tools for on reader application. They have detailed installation instructions.
The do support C# for the PC side as part of the Octane SDK

SpeechRecognitionEngine recognizers

I just downloaded the fr-FR runtime language pack so that I can recognize French speech through my program.
However, my program throws the error
Additional information: No recognizer of the required ID found.
at
SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine(new System.Globalization.CultureInfo("fr-FR"));
en-US and en-GB works because they are pre-installed with my system, I just installed these new language packs but they are still throwing this exception.
Also, if this helps, when I do
foreach (var x in SpeechRecognitionEngine.InstalledRecognizers())
{
Console.Out.WriteLine(x.Name);
}
it prints
MS-1033-80-DESK
EDIT: This is not a possible duplicate because this isn't about having no recognizers installed, it's about C# SAPI not seeing that I have the installed pack for the current language
I was able to get this to work... there is an extra step involved.
Since you're using System.Speech, it uses the installed Desktop speech recognition that comes with Windows. The error you're getting is not because you don't have the language installed, but because you didn't install the speech recognizer for that language.
So, head on over to Setting > Time and Language > Region and language (which is probably where you installed the language from). After you install the language, select the language, and click 'Options'. You should see options to download the language pack, spell checking, and the one we're interested in, Speech. Click Download, and wait for the download/install to finish.
Once it's done, you won't get a notification, but you can go into Settings > Time and Language > Speech and see your installed recognizers there, or you can go to Settings > Speech Recognition > Advanced Speech Options to see the same list.
Now when you run your program, it should work. BTW, if you want to see the installed speech recognizers in your code, use this instead:
foreach (var x in SpeechRecognitionEngine.InstalledRecognizers())
{
Console.WriteLine(x.Culture.Name);
}
You only get a code when asking for the recognizers name, you want the culture's name. (as you saw, MS-1033-80-DESK corresponds to en-US. For reference, fr-FR is MS-1036-80-DESK).
Is it possible that you installed the Microsoft Speech Platform French language pack? Such as the ones seen here? MS Speech Platform Language Packs
If that's the case then it won't appear as an installed language for what you're doing. To get it to work, from what I understand, you will need a language pack installed for French instead which is only available for Windows Ultimate and Enterprise editions if you're using a non-French version of windows.
If that's impossible, then you might have to figure out how to use the Microsoft Speech Platform SDK vs Windows/SAPI. Right now it seems like you're trying to use Windows/SAPI with a Speech Platform Recognizer. Here's the MS page the shows the difference between the MS Speech Platform vs. Windows/SAPI

System.PlatformNotSupportedException: Speech Recognition is not available on this system. SAPI and Speech Recognition engines cannot be found

I am running Windows 7 Professional 64-bit with visual Studio 2010.
I have installed the Microsoft Speech Platform - Server Runtime v10.2 and the en-US language packages.
I created a Web Service (Web Application) using Microsoft.Speech. In my test the Web Service receives a string and simulates the recognition based on some grammar rules.
When I run it in Visual Studio using the ASP.NET Development Server, it works correctly without problems.
I then go to IIs and create a Virtual directory pointing to it. When I try to call the web method I get this error:
System.PlatformNotSupportedException: Speech Recognition is not available on this system. SAPI and Speech Recognition engines cannot be found.
at Microsoft.Speech.Internal.SapiInterop.SapiRecognizer..ctor(RecognizerType type)
at Microsoft.Speech.Recognition.SpeechRecognitionEngine.Initialize(RecognizerInfo recognizerInfo)
at Microsoft.Speech.Recognition.SpeechRecognitionEngine..ctor(CultureInfo culture)
at VoiceCommand.SimulateVoiceCommand(String command) in c:\Development\Visual Studio 2010\VoiceCommandWebService\VoiceCommandWS\App_Code\VoiceCommand.cs:line 35
I don't know what is the difference since I am running it in the same machine. Could it be a permissions issue?
I got some feedback from a Microsoft Forum.
When using the Microsoft Speech Platform - Server Runtime it will run properly in a development client OS like Windows 7, but to run it in a production setting it needs to be in a Windows Server OS.
I tested the same Web Service in Windows Server 2008 and it worked.

Howto: Taking photos in windows mobile without CameraCaptureDialog?

I want to create a windows mobile app (windows mobile 5.0 and above, using CompactFramework [in SharpDevelop]) to capture photos automatically, without user involvement (like it would be with CameraCaptureDialog). After going through google searches I found out a solution that should work (http://blogs.msdn.com/marcpe/archive/2006/03/03/542941.aspx)1 but I cannot compile the source (I guess that is because I use sharpdevelop not MS Visual Studio).
Are there any other options available?
Maybe there is a binary version of that CameraCapture Library somewhere so I can use it without compiling on my own?
Anyone willing to compile the one I linked above and post it somewhere to make binary version available [I tried searching for such in google, but with no success]
The CameraCaptureDialog is part of the Microsoft.WindowsMobile.Forms assembly, which chips in ROM on WinMo 5.0 and later devices. The device SDKs also whip with copies of these assemblies so the apps can build (for example mine is on my PC at C:\Program Files\Windows Mobile 5.0 SDK R2\Managed Libraries). I would assume you should be able to manually add a reference to that assembly in SharpDevelop.

Categories

Resources