Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

List of system voices user has enabled?

Does anyone know how/where I can get a list of which voices the user has enabled, possibly with an AppleScript? Maybe through scripting System Preferences? I found the file ~/Library/Preferences/com.apple.speech.voice.prefs.plist, but that just seems to contain a list of all voices, installed or otherwise.

 MacBook Air-OTHER, OS X Mavericks (10.9.5), 13 in, Mid 2013, Core i5, 256GB

Posted on May 22, 2015 5:26 PM

Reply
Question marked as Best reply

Posted on May 22, 2015 5:35 PM

Look at that file; if a voice was manually enabled, the value below it will be 1 instead of 2.


(127734)

8 replies

May 22, 2015 5:50 PM in response to Niel

Hmmm... one such voice in my file is com.apple.speech.synthesis.voice.kanya.premium_ 0. However, it is neither checked nor installed:

User uploaded file


There are other "0's" that aren't checked. The reverse is also true; "Samantha" was manually installed but its value is 4. I noticed it has a checkbox next to it that says "Enhanced quality" - I wonder if that has something to do with it. I just need to know how many of those values indicate the voice is installed (or at least checked).

Jun 28, 2015 6:24 AM in response to stevejobsfan0123

Before my Yosemite installation, I had downloaded the additional voices that I applied the command too in Mavericks, and unsurprising, it worked after the Yosemite installation due to legacy plist files presence.


I also noticed now that after my Yosemite installation, I obtained two more voices:

  • com.apple.pkg.SpeechVoice_en_US_AlexPremium.plist (Oct 19, 2014)
  • com.apple.pkg.MultiLingualVoice_en_US_ava.plist file (June 28, 2015)


What is not clear is whether MultiLingualVoice is an old naming convention, and SpeechVoice is something new to Yosemite. A slight modification to my original command syntax will get both documents:


ls /var/db/receipts/com.apple.pkg.{MultiLingualVoice,SpeechVoice}*.plist | sed -En 's/.+_([a-z]{2}_[a-zA-Z]{2,}_.+)\..+/\1/p'


Result:

en_GB_kate

en_US_allison

en_US_ava

en_US_tom

en_scotland_fiona

en_US_AlexPremium

Jun 28, 2015 1:26 PM in response to VikingOSX

Another approach, looking at the ~/Library/Preferences/com.apple.speech.voice.prefs.plist document is the following syntax:


defaults read ~/Library/Preferences/com.apple.speech.voice.prefs.plist VisibleIdentifiers | sed -En 's/[ \t]*.+voice\.(.+)"( = 1);/\1\2/p'


Results:


allison.premium = 1

fiona.premium = 1

kate.premium = 1

moira.premium = 1

samantha.premium = 1

susan.premium = 1

tom.premium = 1


And using PlistBuddy:


/usr/libexec/PlistBuddy -c "Print VisibleIdentifiers:" ~/Library/Preferences/com.apple.speech.voice.prefs.plist | awk '$3 == "1" {print substr($0,38,25)}'


Result:


allison.premium = 1

susan.premium = 1

fiona.premium = 1

moira.premium = 1

samantha.premium = 1

kate.premium = 1

tom.premium = 1


There is no alex.premium in this plist. Only Alex and it is set to 2. An ava.premium appears in the plist, but is also set to 2.

List of system voices user has enabled?

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple ID.