I have a research project for which I need TTS. I found that this
functionality is found in a private framework. I understand that this
preclude it from showing up on the App Store, which is fine...this app won't
be going the app store.
In any case, I'm having some issues getting the delegate properly
registered. I'm getting the error message:
2013-01-20 17:29:48.338 BuildingNaviOS[9554:907] -[VSSpeechSynthesizer
delegate]: unrecognized selector sent to instance 0x4493670
when I try and subscribe to the event:
speech = new VSSpeechSynthesizer();
speech.DidFinishSpeaking += delegate( object sender,
FinishSpeakingEventArgs args)
{
IsSpeaking = false;
};
the speech part of it is working and the phone is talking. I'm thinking
that I'm missing something here in my bindings. Do I have to provide the
complete delegate in order for it to register correctly? or will a partial
delegate work? (i'm only interested in the finish speaking callback.)
Here's my current definition...
[BaseType(typeof (NSObject), Delegates = new string[] { "WeakDelegate"
},
Events=new Type [] { typeof (VSSpeechSynthesizerDelegate) })]
public interface VSSpeechSynthesizer
{
[Static, Export("isSystemSpeaking")]
bool IsSystemSpeaking { get; }
[Export("rate")]
float Rate();
[Export("setRate:")]
void SetRate(float rate);
[Export("pitch")]
float Pitch();
[Export("setPitch:")]
void SetPitch(float pitch);
[Export("volume")]
float Volume();
[Export("setVolume:")]
void SetVolume(float volume);
[Export("startSpeakingString:")]
void StartSpeakingString([NullAllowed]string text);
[Export("stopSpeaking")]
void StopSpeaking();
[Export ("delegate"), NullAllowed]
NSObject WeakDelegate { get; set; }
[Wrap ("WeakDelegate"), NullAllowed]
VSSpeechSynthesizerDelegate Delegate { get; set; }
}
[BaseType (typeof (NSObject))]
public interface VSSpeechSynthesizerDelegate
{
[Export("speechSynthesizer:didFinishSpeaking:withError:"),
EventArgs("FinishSpeaking")]
void DidFinishSpeaking(NSObject synth, bool success, IntPtr
error);
[Export("speechSynthesizer:didEncounterSyncMessage:"),
EventArgs("EncounterSyncMessage")]
void DidEncounterSyncMessage(NSObject sync, string message);
[Export("speechSynthesizer:didEncounterErrorAtIndex:ofString:message:"),
EventArgs("EncounterError")]
void DidEncounterErrorAtIndex(NSObject sync, int index, string
text,
string message);
[Export("speechSynthesizer:willSpeakWord:ofString:"),
EventArgs("SpeakWord")]
void WillSpeakWord(NSObject sync, NSRange range, string text);
[Export("speechSynthesizer:willSpeakPhoneme:"),
EventArgs("SpeakPhoneme")]
void WillSpeakPhoneme(NSObject sync, short code);
}
Any help is greatly appreciated!
-Alex
--
View this message in context:
http://monotouch.2284126.n4.nabble.com/Accessing-VSSpeechSynthesizer-engine-on-iPhone-tp4657969.html
Sent from the MonoTouch mailing list archive at Nabble.com.
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch