SetSpeechProperty
の呼び出しで使用される辞書に何が含まれているのかを理解しようとしてkSpeechCurrentVoiceProperty
います。私はこれを理解するために考えられるあらゆる方法を試しましたが、これまでのところ成功していません。これに関するドキュメント(10.8現在)には記載されていません。
これが私がやろうとしていることのコード例です:
OSStatus err = noErr;
SpeechChannel speechChannel = NULL;
NewSpeechChannel(NULL, &speechChannel);
id voiceID = ???; // From the crashes I got, I assume that this should be a NS/CFNumber.
id voiceCreator = ???;
CFDictionaryRef voiceDict = (CFDictionaryRef)@{
(NSString *)kSpeechVoiceID : voiceID,
(NSString *)kSpeechVoiceCreator : voiceCreator
};
err = SetSpeechProperty(speechChannel, kSpeechCurrentVoiceProperty, voiceDict);
もちろん、理論的には、次のようなことができます。
VoiceSpec voice;
GetIndVoice(voiceNum, &voice);
NewSpeechChannel(&voice, &chan);
非常に複雑な理由で、これは私の特定のケースではオプションではありません。実際には、私は自分が制御できない他の場所からspeechChannelを取得しており、別の場所に置き換えることはできません。だから私はそれをその場で修正しなければなりません。
文書化された狂気のこの谷から私を救ってください!