मैक ओएस एक्स - टेक्स्ट-टू-स्पीच के लिए तुरंत आवाज़ें बदलें


10

मुझे मैक ओएस एक्स के भाषण फीचर से प्यार है। चूंकि मैं एक देशी अंग्रेजी वक्ता नहीं हूं, इसलिए मुझे शेर से बाहर आने के बाद सभी अतिरिक्त भाषाओं के बारे में बहुत खुशी है। हालांकि, मैं अंग्रेजी के साथ-साथ अपनी मूल भाषा (जर्मन) का भी उपयोग करता हूं। आवाज बदलना थोड़ा दर्द है। यह सिर्फ आरामदायक होने के लिए बहुत अधिक चरणों की आवश्यकता है।

क्या यह आसान बनाने का कोई तरीका है? मैं शॉर्टकट की तलाश कर रहा था, शायद दाहिने कोने में एक ड्रॉप डाउन मेनू, कुछ भी ठीक होगा।

चूंकि मेरी खोज सफल नहीं थी, इसलिए मुझे सुपरयूजर पर यहां कुछ सलाह मिलने की उम्मीद है। आपका बहुत बहुत धन्यवाद!

cu रोमन


मैं मैक पर हूं, और टॉकी बनाया: स्वचालित भाषा पहचान के साथ एक टेक्स्ट-टू-स्पीच ब्राउज़र एक्सटेंशन। यह सभी खुले स्रोत हैं, लेकिन कुछ सुविधाएँ वाणिज्यिक वितरण टॉकी प्रीमियम में हैं। ब्राउज़र में (शॉर्टकट कुंजी के साथ) उपयोग करने के लिए सबसे आसान है, लेकिन आप इसे किसी भी एप्लिकेशन से क्लिपबोर्ड (प्रीमियम) के माध्यम से उपयोग कर सकते हैं। आपकी मदद कर सकता है! joelpurra.com/projects/talkie
जोएल पुर्रा

जवाबों:


9

मैंने इस स्क्रिप्ट का शॉर्टकट असाइन करने के लिए FastScripts का उपयोग किया है:

try
    set old to the clipboard as record
end try
try
    tell application "System Events" to keystroke "c" using command down
    delay 0.05
    say (the clipboard) using "Kyoko"
end try
try
    set the clipboard to old
end try

आप ऑटोमेटर में एक सेवा भी बना सकते हैं:

10.7 और 10.8 में एक बग है, जहां ऑटोमेटर सेवाओं के लिए शॉर्टकट हमेशा तब तक काम नहीं करते हैं जब तक आप मेनू बार से सेवा मेनू पर होवर नहीं करते हैं। WorkflowServiceRunner टेक्स्ट बोलते समय 100% से अधिक CPU का उपयोग कर सकता है।

एक अन्य विकल्प यूआई स्क्रिप्टिंग का उपयोग दो आवाज़ों के बीच बदलने के लिए किया जाएगा:

tell application "System Preferences"
    reveal anchor "TTS" of pane "com.apple.preference.speech"
end tell
tell application "System Events" to tell process "System Preferences"
    tell pop up button 1 of tab group 1 of window 1
        click
        delay 0.1
        if value is "Alex" then
            click menu item "Victoria" of menu 1
        else
            click menu item "Alex" of menu 1
        end if
    end tell
end tell
quit application "System Preferences"

Com.apple.speech.voice.prefs.plist में SelectVoiceID कुंजी को बदलना भी काम करता है, लेकिन मुझे नहीं पता कि परिवर्तनों को तुरंत कैसे लागू किया जाए।


वाह, इस बहुत विस्तृत जवाब के लिए बहुत बहुत धन्यवाद और मुझे इतने सारे विकल्प दिखाने के लिए। ऑटोमेकर सेवा मेरे लिए बहुत अच्छा काम करती है, अब मैं उन सेवाओं के बारे में जानता हूं। मैं कुछ अन्य लोगों को भी जोड़ना चाहूंगा :)

1
उत्तम सामग्री। OSX 10.10 के रूप में: परिवर्तनों को ~/Library/Preferences/com.apple.speech.voice.prefs.plistतुरंत लागू करने के लिए , चलाएं pkill com.apple.speech.speechsynthesisd, जो सिस्टम को स्वचालित रूप से प्रक्रिया को पुनरारंभ करने का कारण बनता है, जिस बिंदु पर परिवर्तन उठाया जाता है।
mklement0

1
मेरे OS X 10.10.4 पर, आपकी UI स्क्रिप्टिंग केवल तभी काम करती है जब मैं लाइन 1 और 2 के बीच "सक्रिय" लाइन सम्मिलित करता हूं अन्यथा मुझे त्रुटि मिलती है: प्रक्रिया 1 "सिस्टम वरीयताएँ" के विंडो 1 का टैब समूह 1 नहीं हो सकता। पढ़ा जा ... किसी भी सुझाव क्यों यह मेरे लिए लागू होता है लेकिन दूसरों के लिए नहीं?
जेन्स विर्थ

3

बहुत बहुत धन्यवाद लॉरी।

मैंने जर्मन और अंग्रेजी आवाज़ों के साथ ठीक से काम करने के लिए आपके UI स्क्रिप्टिंग दृष्टिकोण को बढ़ाया है। समस्या यह है, जब आपकी सिस्टम भाषा अंग्रेजी नहीं है, सभी गैर-सिस्टम भाषाएं छिपी हुई हैं (यदि वर्तमान में चयनित नहीं हैं)। आपको सेलेक्ट करना है: अधिक आवाजें दिखाएं .. पहले इच्छित भाषा में आने के लिए। मेरे कोड में थोड़ी शान की कमी है, लेकिन काम करता है। यहाँ यह (अद्यतन) है:

tell application "System Preferences"
    reveal anchor "TTS" of pane "com.apple.preference.speech"
end tell
set tom to 0
tell application "System Events" to tell process "System Preferences"
    tell pop up button 1 of tab group 1 of window 1
        click
        delay 0.2 -- without this the value was sometimes "Loading Voices…"

        if value is "Tom" then
            click menu item "Anna" of menu 1
        else
            click menu item "Mehr Stimmen anzeigen" of menu 1 -- show up all available voice
            set tom to 1
        end if
    end tell
end tell
if tom is 1 then
    delay 0.5
    tell application "System Events" to tell process "System Preferences"
        tell pop up button 1 of tab group 1 of window 1
            click
            delay 0.2 -- without this the value was sometimes "Loading Voices…"
            click menu item "Tom" of menu 1
        end tell
    end tell
end if
quit application "System Preferences"

0

प्रत्यक्ष परिवर्तन की ~/Library/Preferences/com.apple.speech.voice.prefs.plistवास्तव में जरूरत नहीं है अगर आपको बैश-स्क्रिप्ट वॉयस मिलें जो वास्तव में आपकी जरूरत की सभी कमांड-लाइन कार्यक्षमता को जोड़ता है।

एलेक्स को आवाज का उपयोग करके मानक आवाज बदलने के लिए एक Apple स्क्रिप्ट बस इस तरह दिखाई देगी:

on run
    do shell script "voices -d Alex"
end run

मैं टर्मिनल को पसंद करता हूं, और पॉलीग्लॉट मेनू-बार घुसपैठ का परीक्षण करने के बजाय, मैंने अपनी भाषा-स्विचिंग जरूरतों के लिए यह (सामान्य रूप से सरल-बेवकूफ) शेल स्क्रिप्ट (जो कि आवाज का उपयोग करता है) बनाया है। इसके साथ, सभी मैं डिफ़ॉल्ट भाषा को बदलने के लिए टर्मिनल में पॉप speak swedishया टाइप करने के लिए है speak french। यह मेरे वर्कफ़्लो में उत्कृष्ट रूप से फिट बैठता है। मुझे उम्मीद है कि आप एक समाधान पा सकते हैं जो आपका फिट बैठता है।

# Choose a voice in one of some selected languages
# Use "voices" from https://github.com/mklement0/voices#manual-installation

if [[ $1 = "" ]]
then
    echo "ERROR. No language specified. Type a language as in 'speak hebrew'"
fi
if [[ $1 = "swedish" || $1 = "Swedish" ]]
then
    voices -d Klara
fi
if [[ $1 = "english" || $1 = "English" ]]
then
    voices -d Daniel
fi
if [[ $1 = "american" || $1 = "American" ]]
then
    voices -d Alex
fi
if [[ $1 = "french" || $1 = "French" ]]
then
    voices -d Aurelie
fi
if [[ $1 = "spanish" || $1 = "Spanish" ]]
then
    voices -d Jorge
fi

मैं इसे अपनी स्क्रिप्ट में "Speak.command" के रूप में सहेजता हूं, इसे + x को चकमा देता हूं, और अपने .bash_profile में उचित उपनाम जोड़कर इसे टाइप करने के लिए उकसाता हूं speak


-2

मैंने उसके लिए एक स्टेटस बार टूल लिखा:

https://github.com/Fredmf/polyglott

जाहिर है यह अभी भी सिएरा में काम करता है


1
क्या आप एक उदाहरण उपयोग मामले को शामिल करने के लिए अपने जवाब का विस्तार कर सकते हैं जो ओपी के मुद्दे को हल करेगा। कृपया देखें meta.superuser.com/questions/5329/...
Bürgi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.