Re: How to speak Chinese on 10.9.2
On 15 May 2014, at 08:41, Jens Alfke j...@mooseyard.com wrote: On May 14, 2014, at 6:24 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: But the only thing in 10.9.2 I found was NSSpeechSynthesizer, which has 24 voices (which is nice) but all 24 have VoiceLanguage = VoiceLocaleIdentifier = en_US (which seems rather odd). The non-English voices are optional downloads — you can get them via the Dictation/Speech system pref pane. Pull down the System Voice pop-up and choose Customize… Thanks. Just did that. Did set System Voice to Anna (a German voice). Now, when I select some (German) text and do Control-Click → Speech → Start Speaking it just works. Very good. But this: NSString *voiceIdentifier = @com.apple.speech.synthesis.voice.anna.premium; NSString *text = @Der Osten ist rot.; NSSpeechSynthesizer *syn = [ [ NSSpeechSynthesizer alloc ] initWithVoice: voiceIdentifier ]; // non-nil BOOL ok = [ syn startSpeakingString: text ];// returns YES, but does NOT speak NSString *pp = [ syn phonemesFromText: text ]; // returns empty string does not work as expected. Same problem with all other voices I just downloaded. Only the default (en-US) voices work as they should. What am I missing? Gerriet. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How to speak Chinese on 10.9.2
German Anna, Chinese Mei-Jia, and Korean Yuna all speak my English text (Shakespeare, actually, in my test case) with accents from each language. I also verified Mei-Jia speaks Chinese from a Chinese play in my app, too. Do you get any calls in your delegate methods (you have set the delegate on your speech synthesizer instance, right)? One difference I’ve done is to initWithVoice: with nil and later call setVoice:. Also, I haven’t tried this sequence myself, but I noticed in your sample code you’re calling phonemesFromText: right after startSpeakingString:. Maybe phonemesFromText: is short-circuiting the speaking? It’s been a while since I’ve worked on my app, but I remember some calls will stop any current speaking. -- Gary L. Wade http://www.garywade.com/ On 5/14/2014, 11:15 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 08:41, Jens Alfke j...@mooseyard.com wrote: On May 14, 2014, at 6:24 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: But the only thing in 10.9.2 I found was NSSpeechSynthesizer, which has 24 voices (which is nice) but all 24 have VoiceLanguage = VoiceLocaleIdentifier = en_US (which seems rather odd). The non-English voices are optional downloads — you can get them via the Dictation/Speech system pref pane. Pull down the System Voice pop-up and choose Customize… Thanks. Just did that. Did set System Voice to Anna (a German voice). Now, when I select some (German) text and do Control-Click → Speech → Start Speaking it just works. Very good. But this: NSString *voiceIdentifier = @com.apple.speech.synthesis.voice.anna.premium; NSString *text = @Der Osten ist rot.; NSSpeechSynthesizer *syn = [ [ NSSpeechSynthesizer alloc ] initWithVoice: voiceIdentifier ]; // non-nil BOOL ok = [ syn startSpeakingString: text ]; // returns YES, but does NOT speak NSString *pp = [ syn phonemesFromText: text ]; // returns empty string does not work as expected. Same problem with all other voices I just downloaded. Only the default (en-US) voices work as they should. What am I missing? Gerriet. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How to speak Chinese on 10.9.2
On 15 May 2014, at 15:53, Gary L. Wade garyw...@desisoftsystems.com wrote: German Anna, Chinese Mei-Jia, and Korean Yuna all speak my English text (Shakespeare, actually, in my test case) with accents from each language. I also verified Mei-Jia speaks Chinese from a Chinese play in my app, too. Do you get any calls in your delegate methods (you have set the delegate on your speech synthesizer instance, right)? No, no delegate yet. One difference I’ve done is to initWithVoice: with nil and later call setVoice:. Also, I haven’t tried this sequence myself, but I noticed in your sample code you’re calling phonemesFromText: right after startSpeakingString:. Maybe phonemesFromText: is short-circuiting the speaking? An interesting point. But when I replace Anna with Bruce (one of the preinstalled voices), he speaks and I also get the phonemes. (still not using any delegate). Must be something else. Just added a delegate with speechSynthesizer:didEncounterErrorAtIndex:ofString:message: and speechSynthesizer:willSpeakWord:ofString: but neither of these gets called with Anna. With Bruce the latter method does get called. Still puzzled. It’s been a while since I’ve worked on my app, but I remember some calls will stop any current speaking. -- Gary L. Wade http://www.garywade.com/ On 5/14/2014, 11:15 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 08:41, Jens Alfke j...@mooseyard.com wrote: On May 14, 2014, at 6:24 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: But the only thing in 10.9.2 I found was NSSpeechSynthesizer, which has 24 voices (which is nice) but all 24 have VoiceLanguage = VoiceLocaleIdentifier = en_US (which seems rather odd). The non-English voices are optional downloads — you can get them via the Dictation/Speech system pref pane. Pull down the System Voice pop-up and choose Customize… Thanks. Just did that. Did set System Voice to Anna (a German voice). Now, when I select some (German) text and do Control-Click → Speech → Start Speaking it just works. Very good. But this: NSString *voiceIdentifier = @com.apple.speech.synthesis.voice.anna.premium; NSString *text = @Der Osten ist rot.; NSSpeechSynthesizer *syn = [ [ NSSpeechSynthesizer alloc ] initWithVoice: voiceIdentifier ];// non-nil BOOL ok = [ syn startSpeakingString: text ]; // returns YES, but does NOT speak NSString *pp = [ syn phonemesFromText: text ]; // returns empty string does not work as expected. Same problem with all other voices I just downloaded. Only the default (en-US) voices work as they should. What am I missing? Gerriet. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How to speak Chinese on 10.9.2
On 15 May 2014, at 15:53, Gary L. Wade garyw...@desisoftsystems.com wrote: Also, I haven’t tried this sequence myself, but I noticed in your sample code you’re calling phonemesFromText: right after startSpeakingString:. Maybe phonemesFromText: is short-circuiting the speaking? Right on! Putting phonemesFromText: BEFORE startSpeakingString: finally gets me to hear all my new voices. But: phonemesFromText: still returns an empty string. This is a pity, because getting the phonemes is the goal of the whole exercise. With or without delegate. Another thing: setUsesFeedbackWindow: YES has no visible effect whatsoever with any voice. It’s been a while since I’ve worked on my app, but I remember some calls will stop any current speaking. -- Gary L. Wade http://www.garywade.com/ On 5/14/2014, 11:15 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 08:41, Jens Alfke j...@mooseyard.com wrote: On May 14, 2014, at 6:24 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: But the only thing in 10.9.2 I found was NSSpeechSynthesizer, which has 24 voices (which is nice) but all 24 have VoiceLanguage = VoiceLocaleIdentifier = en_US (which seems rather odd). The non-English voices are optional downloads — you can get them via the Dictation/Speech system pref pane. Pull down the System Voice pop-up and choose Customize… Thanks. Just did that. Did set System Voice to Anna (a German voice). Now, when I select some (German) text and do Control-Click → Speech → Start Speaking it just works. Very good. But this: NSString *voiceIdentifier = @com.apple.speech.synthesis.voice.anna.premium; NSString *text = @Der Osten ist rot.; NSSpeechSynthesizer *syn = [ [ NSSpeechSynthesizer alloc ] initWithVoice: voiceIdentifier ];// non-nil BOOL ok = [ syn startSpeakingString: text ]; // returns YES, but does NOT speak NSString *pp = [ syn phonemesFromText: text ]; // returns empty string does not work as expected. Same problem with all other voices I just downloaded. Only the default (en-US) voices work as they should. What am I missing? Gerriet. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How to speak Chinese on 10.9.2
If you need the phonemes, look at the willSpeakPhoneme delegate method. You can use it in conjunction with the other delegates in a manner like NSString enumerates sentences and words―not a perfect comparison, but it should help you conceptually. If I recall, the feedback window solves a very narrow need, one that didn't help me much, so I didn't explore it, especially since the delegate methods gave me what I needed. I wouldn't doubt that NSSpeechSynthesizer gets deprecated in favor of the AV variety based on the way Apple has historically ported underlying technologies between platforms, but if not or you need to support older OSes, be careful about some of its property retrieval methods, especially the phoneme dictionary per voice, since in at least one OS and earlier it returned a retained object vs an autoreleased object against the Objective-C memory naming contract. -- Gary L. Wade (Sent from my iPhone) http://www.garywade.com/ On May 15, 2014, at 5:53 AM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 15:53, Gary L. Wade garyw...@desisoftsystems.com wrote: Also, I haven’t tried this sequence myself, but I noticed in your sample code you’re calling phonemesFromText: right after startSpeakingString:. Maybe phonemesFromText: is short-circuiting the speaking? Right on! Putting phonemesFromText: BEFORE startSpeakingString: finally gets me to hear all my new voices. But: phonemesFromText: still returns an empty string. This is a pity, because getting the phonemes is the goal of the whole exercise. With or without delegate. Another thing: setUsesFeedbackWindow: YES has no visible effect whatsoever with any voice. It’s been a while since I’ve worked on my app, but I remember some calls will stop any current speaking. -- Gary L. Wade http://www.garywade.com/ On 5/14/2014, 11:15 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 08:41, Jens Alfke j...@mooseyard.com wrote: On May 14, 2014, at 6:24 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: But the only thing in 10.9.2 I found was NSSpeechSynthesizer, which has 24 voices (which is nice) but all 24 have VoiceLanguage = VoiceLocaleIdentifier = en_US (which seems rather odd). The non-English voices are optional downloads ― you can get them via the Dictation/Speech system pref pane. Pull down the System Voice pop-up and choose Customize… Thanks. Just did that. Did set System Voice to Anna (a German voice). Now, when I select some (German) text and do Control-Click → Speech → Start Speaking it just works. Very good. But this: NSString *voiceIdentifier = @com.apple.speech.synthesis.voice.anna.premium; NSString *text = @Der Osten ist rot.; NSSpeechSynthesizer *syn = [ [ NSSpeechSynthesizer alloc ] initWithVoice: voiceIdentifier ];//non-nil BOOL ok = [ syn startSpeakingString: text ];//returns YES, but does NOT speak NSString *pp = [ syn phonemesFromText: text ];//returns empty string does not work as expected. Same problem with all other voices I just downloaded. Only the default (en-US) voices work as they should. What am I missing? Gerriet. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How to speak Chinese on 10.9.2
On 15 May 2014, at 22:12, Gary L. Wade garyw...@desisoftsystems.com wrote: If you need the phonemes, look at the willSpeakPhoneme delegate method. You can use it in conjunction with the other delegates in a manner like NSString enumerates sentences and words—not a perfect comparison, but it should help you conceptually. Unfortunately the documentation says about speechSynthesizer:willSpeakPhoneme: This method is not sent for modern voices. And this seems indeed to be the case. Another problem with: speechSynthesizer:willSpeakWord:ofString: - while it works fine for German or Chinese, it gives complete garbage for Thai. If I recall, the feedback window solves a very narrow need, one that didn't help me much, so I didn't explore it, especially since the delegate methods gave me what I needed. I wouldn't doubt that NSSpeechSynthesizer gets deprecated in favor of the AV variety based on the way Apple has historically ported underlying technologies between platforms, but if not or you need to support older OSes, be careful about some of its property retrieval methods, especially the phoneme dictionary per voice, since in at least one OS and earlier it returned a retained object vs an autoreleased object against the Objective-C memory naming contract. -- Gary L. Wade (Sent from my iPhone) http://www.garywade.com/ On May 15, 2014, at 5:53 AM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 15:53, Gary L. Wade garyw...@desisoftsystems.com wrote: Also, I haven’t tried this sequence myself, but I noticed in your sample code you’re calling phonemesFromText: right after startSpeakingString:. Maybe phonemesFromText: is short-circuiting the speaking? Right on! Putting phonemesFromText: BEFORE startSpeakingString: finally gets me to hear all my new voices. But: phonemesFromText: still returns an empty string. This is a pity, because getting the phonemes is the goal of the whole exercise. With or without delegate. Another thing: setUsesFeedbackWindow: YES has no visible effect whatsoever with any voice. It’s been a while since I’ve worked on my app, but I remember some calls will stop any current speaking. -- Gary L. Wade http://www.garywade.com/ On 5/14/2014, 11:15 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 08:41, Jens Alfke j...@mooseyard.com wrote: On May 14, 2014, at 6:24 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: But the only thing in 10.9.2 I found was NSSpeechSynthesizer, which has 24 voices (which is nice) but all 24 have VoiceLanguage = VoiceLocaleIdentifier = en_US (which seems rather odd). The non-English voices are optional downloads — you can get them via the Dictation/Speech system pref pane. Pull down the System Voice pop-up and choose Customize… Thanks. Just did that. Did set System Voice to Anna (a German voice). Now, when I select some (German) text and do Control-Click → Speech → Start Speaking it just works. Very good. But this: NSString *voiceIdentifier = @com.apple.speech.synthesis.voice.anna.premium; NSString *text = @Der Osten ist rot.; NSSpeechSynthesizer *syn = [ [ NSSpeechSynthesizer alloc ] initWithVoice: voiceIdentifier ];//non-nil BOOL ok = [ syn startSpeakingString: text ];//returns YES, but does NOT speak NSString *pp = [ syn phonemesFromText: text ];//returns empty string does not work as expected. Same problem with all other voices I just downloaded. Only the default (en-US) voices work as they should. What am I missing? Gerriet. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How to speak Chinese on 10.9.2
Well, that's not fun. It's been a while since I tried it out, though. Well, write up some bugs, and if you have a sample app showing what you need, it'll at least get addressed. Speech is a priority although the forms of that priority might be different than we expect. And, if you are one of us going to WWDC in a couple of weeks, be ready to talk with whatever group you'll need to; that's how I found out the cause of the memory leak bug by one of the team members bringing up the source code right there. -- Gary L. Wade (Sent from my iPhone) http://www.garywade.com/ On May 15, 2014, at 8:38 AM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 22:12, Gary L. Wade garyw...@desisoftsystems.com wrote: If you need the phonemes, look at the willSpeakPhoneme delegate method. You can use it in conjunction with the other delegates in a manner like NSString enumerates sentences and words―not a perfect comparison, but it should help you conceptually. Unfortunately the documentation says about speechSynthesizer:willSpeakPhoneme: This method is not sent for modern voices. And this seems indeed to be the case. Another problem with: speechSynthesizer:willSpeakWord:ofString: - while it works fine for German or Chinese, it gives complete garbage for Thai. If I recall, the feedback window solves a very narrow need, one that didn't help me much, so I didn't explore it, especially since the delegate methods gave me what I needed. I wouldn't doubt that NSSpeechSynthesizer gets deprecated in favor of the AV variety based on the way Apple has historically ported underlying technologies between platforms, but if not or you need to support older OSes, be careful about some of its property retrieval methods, especially the phoneme dictionary per voice, since in at least one OS and earlier it returned a retained object vs an autoreleased object against the Objective-C memory naming contract. -- Gary L. Wade (Sent from my iPhone) http://www.garywade.com/ On May 15, 2014, at 5:53 AM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 15:53, Gary L. Wade garyw...@desisoftsystems.com wrote: Also, I haven’t tried this sequence myself, but I noticed in your sample code you’re calling phonemesFromText: right after startSpeakingString:. Maybe phonemesFromText: is short-circuiting the speaking? Right on! Putting phonemesFromText: BEFORE startSpeakingString: finally gets me to hear all my new voices. But: phonemesFromText: still returns an empty string. This is a pity, because getting the phonemes is the goal of the whole exercise. With or without delegate. Another thing: setUsesFeedbackWindow: YES has no visible effect whatsoever with any voice. It’s been a while since I’ve worked on my app, but I remember some calls will stop any current speaking. -- Gary L. Wade http://www.garywade.com/ On 5/14/2014, 11:15 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: On 15 May 2014, at 08:41, Jens Alfke j...@mooseyard.com wrote: On May 14, 2014, at 6:24 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: But the only thing in 10.9.2 I found was NSSpeechSynthesizer, which has 24 voices (which is nice) but all 24 have VoiceLanguage = VoiceLocaleIdentifier = en_US (which seems rather odd). The non-English voices are optional downloads ― you can get them via the Dictation/Speech system pref pane. Pull down the System Voice pop-up and choose Customize… Thanks. Just did that. Did set System Voice to Anna (a German voice). Now, when I select some (German) text and do Control-Click → Speech → Start Speaking it just works. Very good. But this: NSString *voiceIdentifier = @com.apple.speech.synthesis.voice.anna.premium; NSString *text = @Der Osten ist rot.; NSSpeechSynthesizer *syn = [ [ NSSpeechSynthesizer alloc ] initWithVoice: voiceIdentifier ];//non-nil BOOL ok = [ syn startSpeakingString: text ];//returns YES, but does NOT speak NSString *pp = [ syn phonemesFromText: text ];//returns empty string does not work as expected. Same problem with all other voices I just downloaded. Only the default (en-US) voices work as they should. What am I missing? Gerriet. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: How to speak Chinese on 10.9.2
On May 14, 2014, at 6:24 PM, Gerriet M. Denkmann gerr...@mdenkmann.de wrote: But the only thing in 10.9.2 I found was NSSpeechSynthesizer, which has 24 voices (which is nice) but all 24 have VoiceLanguage = VoiceLocaleIdentifier = en_US (which seems rather odd). The non-English voices are optional downloads — you can get them via the Dictation/Speech system pref pane. Pull down the System Voice pop-up and choose Customize… —Jens ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com