Mac OS X - Cepat mengubah suara untuk Text-to-Speech

10

Saya suka fitur Text to Speech di Mac OS X. Karena saya bukan penutur asli bahasa Inggris, saya sangat senang dengan semua bahasa tambahan yang ditambahkan sejak Lion keluar. Namun, saya menggunakan bahasa Inggris dan juga bahasa ibu saya (Jerman). Mengubah suara sedikit menyakitkan. Hanya membutuhkan terlalu banyak langkah untuk merasa nyaman.

Apakah ada cara untuk membuatnya mudah? Saya sedang mencari jalan pintas, mungkin menu drop down di suatu tempat di sudut kanan, semuanya akan baik-baik saja.

Karena pencarian saya tidak berhasil, saya berharap dapat menemukan beberapa saran di SuperUser di sini. Terima kasih banyak!

cu Roman


sumber
Saya menggunakan Mac, dan membuat Talkie: ekstensi peramban text-to-speech dengan deteksi bahasa otomatis. Semuanya open source, tetapi beberapa fitur ada dalam distribusi komersial Talkie Premium. Paling mudah digunakan di browser (dengan tombol pintas), tetapi Anda dapat menggunakannya dari aplikasi apa pun melalui clipboard (premium). Mungkin bisa membantu Anda! joelpurra.com/projects/talkie
Joel Purra

Jawaban:

9

Saya telah menggunakan FastScripts untuk menetapkan pintasan ke skrip ini:

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

Anda juga dapat membuat layanan di Automator:

Ada bug di 10.7 dan 10.8 di mana pintasan untuk layanan Automator tidak selalu berfungsi sampai Anda mengarahkan kursor ke menu layanan dari bilah menu. WorkflowServiceRunner juga dapat menggunakan lebih dari 100% CPU saat berbicara teks.

Opsi lain adalah menggunakan skrip UI untuk mengubah antara dua suara:

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"

Mengubah kunci SelectedVoiceID di com.apple.speech.voice.prefs.plist juga berfungsi, tetapi saya tidak tahu cara menerapkan perubahan dengan segera.

Lri
sumber
Wow, terima kasih banyak atas jawaban yang sangat terperinci ini dan karena telah menunjukkan banyak pilihan kepada saya. Layanan Pengotomasi bekerja sangat baik bagi saya, apalagi sekarang saya tahu tentang layanan itu. Saya mungkin ingin menambahkan beberapa yang lain juga :)
1
Hal yang bagus. Pada OSX 10.10: Untuk menerapkan perubahan dengan ~/Library/Preferences/com.apple.speech.voice.prefs.plistsegera, jalankan pkill com.apple.speech.speechsynthesisd, yang menyebabkan sistem memulai ulang proses secara otomatis, pada titik mana perubahan tersebut diambil.
mklement0
1
Pada OS X 10.10.4 saya, skrip UI Anda hanya berfungsi jika saya menyisipkan baris "aktifkan" antara baris 1 dan 2. Kalau tidak, saya mendapatkan kesalahan: „grup tab 1 dari jendela 1 proses \" System Preferences \ "" tidak bisa dibaca ... Ada saran mengapa ini berlaku untuk saya tetapi tidak untuk orang lain?
Jens Wirth
3

Lauryi terima kasih banyak.

Saya telah memperluas pendekatan skrip UI Anda agar berfungsi dengan baik dengan suara bahasa Jerman dan Inggris. Masalahnya adalah, ketika bahasa sistem Anda bukan bahasa Inggris, semua bahasa non-sistem disembunyikan (jika saat ini tidak dipilih). Anda harus memilih: tampilkan lebih banyak suara .. terlebih dahulu untuk mendapatkan bahasa yang diinginkan. Kode saya kurang elegan, tetapi berhasil. Ini dia (diperbarui):

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"
kantorde
sumber
0

Perubahan langsung untuk ~/Library/Preferences/com.apple.speech.voice.prefs.plisttidak benar-benar diperlukan jika Anda mendapatkan bash-script Voices yang benar-benar menambahkan semua fungsi baris perintah yang Anda butuhkan.

Skrip Apple untuk mengubah suara standar menjadi Alex menggunakan Voices akan terlihat seperti ini:

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

Saya lebih suka terminal, dan alih-alih menguji intrusi menu-bar polyglot, saya membuat skrip shell (diakui sederhana-bodoh) ini (yang menggunakan suara) untuk kebutuhan alih bahasa saya. Dengan itu, Yang saya lakukan untuk mengubah bahasa default adalah dengan pop ke terminal untuk mengetik speak swedishatau speak french. Ini sangat cocok dengan alur kerja saya. Saya harap Anda dapat menemukan solusi yang cocok dengan Anda.

# 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

Saya menyimpannya ke skrip saya sebagai "speak.command", chmod itu + x, dan menambahkan alias yang sesuai ke .bash_profile saya untuk membangkitkannya dengan mengetik speak.

Josef Lilljegren
sumber