def _getAvailableVoices(self):\r
voices=OrderedDict()\r
v=self._getVoiceTokens()\r
- for i in range(len(v)):\r
+ # #2629: Iterating uses IEnumVARIANT and GetBestInterface doesn't work on tokens returned by some token enumerators.\r
+ # Therefore, fetch the items by index, as that method explicitly returns the correct interface.\r
+ for i in xrange(len(v)):\r
try:\r
ID=v[i].Id\r
name=v[i].GetDescription()\r
self.tts.audioOutput=self.tts.getAudioOutputs()[outputDeviceID]\r
\r
def _set_voice(self,value):\r
- for voice in self._getVoiceTokens():\r
+ tokens = self._getVoiceTokens()\r
+ # #2629: Iterating uses IEnumVARIANT and GetBestInterface doesn't work on tokens returned by some token enumerators.\r
+ # Therefore, fetch the items by index, as that method explicitly returns the correct interface.\r
+ for i in xrange(len(tokens)):\r
+ voice=tokens[i]\r
if value==voice.Id:\r
break\r
else:\r
- In IBM Lotus Symphony and OpenOffice, moving the caret now moves the review cursor if appropriate.\r
- Adobe Flash content is now accessible in Internet Explorer in Windows 8. (#2454)\r
- Fixed Bluetooth support for Papenmeier Braillex Trio. (#2995)\r
+- Fixed inability to use certain Microsoft Speech API version 5 voices such as Koba Speech 2 voices. (#2629)\r
\r
\r
== Changes for Developers ==\r