OS X'in 'say' komutunun bir kelimeyi telaffuz etme şeklini nasıl değiştirebilirim?


14

OS X'in saykomutu bazı görevler için yararlıdır (Skype'ın bir kişi çevrimiçi olduğunda bana bildir) gibi, ancak bazı adları yanlış telaffuz ediyor. sayBir kelimeyi farklı şekilde telaffuz etmeyi öğretmenin bir yolu var mı ?

Örneğin, şunu deneyin:

say "Hi, Joel Spolsky"

'Ol', 'eski' yerine 'top' gibi geliyor. Yeni dilbilimsel kuralları öğretmeye çalışmak yerine "Spolsky'yi böyle telaffuz et" diyen bir istisna eklemek istiyorum. Bahse girerim Apple'ın istediği gibi "iphone" olarak telaffuz edebileceğinden bir yol var.


Güncelleme - Biraz araştırma yaptıktan sonra, öğrendiklerim:

  1. Metin-konuşma, metni fonemlere çevirme arasında bölünür ve daha sonra fonemler bir ses kullanılarak sese dönüştürülür. Sesi değiştirmek, fonemleri etkilemez.
  2. Konuşma Sentezi Yöneticisi bazı işlevlere sahiptir sesbirimler metin çevirme ve için bir yöntem , bir konuşma sözlüğü kayıt yeni bir metin-ses haritalar ekleyecek. Ancak, Apple'ın konuşma sözlüğü ikili bir biçimde olmalıdır - plist XML bulamadım.
  3. Kullanılması dtracekoşarken say, ben /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources açıldı bazı ilginç dosyalar bulundu. Bu muhtemelen konuşma sözlüğüdür, ancak XML olan Homofonlar hariç hepsi ikili. Homofonlara giriş eklemek hiçbir şey yapmaz - muhtemelen konuşmadan metne kullanılır. Ayrıca Apple tarafından imzalanmış kodlardır - bunları değiştirmek bazı programların çalışmasını engelleyebilir.
    • PrefixDictionary
    • CartNames
    • CartLite
    • SymbolDictionary
    • sestek
  4. Uygulama arayüzü öğelerinin metin sürümlerini eklemenin yolları vardır, böylece VoiceOver çalışır, bir çoğu geliştiricinin ücretsiz olarak alır, ancak zor bitler vardır . Buradaki standart, gerektiği gibi fonetik bir yazım kullanmak gibi görünüyor.

Tahminlerim:

  1. sayKonuşma Sentezi Yöneticisi'nin üstündeki hafif bir kod katmanıdır. Apple geliştiricilerinin, alternatif foneme eşlemesi için bir konuşma sözlüğü plistine giden yolu bir komut satırı seçeneği eklemesi kolay olurdu, ancak olmadılar. Daha iyisi yazmak yararlı bir açık kaynaklı proje olabilir say.
  2. Skype muhtemelen Speech Synthesis Manager'ı doğrudan kullanıyor ve arkadaşımın isimlerinin telaffuz biçimini değiştirmek için kanca bırakmıyor, bunları fonetik olarak hecelemekten başka, saçma.
  3. Komut satırı sürümünü oluşturmanın en kolay yolu sayJRobert'in önerdiği yöntemdir.

Doug Harris'in yazım önerisini kullanarak hızlı uygulamam:

#!/bin/sh
echo $@ | tr '[A-Z]' '[a-z]' |
sed "s/spolsky/spowlsky/g" |
/usr/bin/say

Son olarak, bazı eğlenceli komut satırı şeyler:

# Apple is weird
sqlite3 /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources/Tuples .dump
# Get too much information about what files are being opened
sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'
# Just fun
say -v bad "Joel Spolsky Spolsky Spolsky Spolsky Spolsky, Joel Spolsky Spolsky Spolsky Spolsky Spolsky"
echo "scale=1000; 4*a(1)" | bc -l | say

sayKullanmakta olan sesi değiştirmeyi denediniz -vmi?
Studer

2
Telaffuz etkisi yok: say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'. Seslerin listesi Sistem Tercihleri ​​-> Konuşma -> Metinden Konuşmaya bölümünde bulunabilir. Sorun ses sentezinde değil fonem çevirisinde. Doğrudan kütüphane aradığınız varsa, özel fonemleri ayarlayabilirsiniz: developer.apple.com/mac/library/documentation/Carbon/Reference/... Elma Devs bir .plist kullanılan olmadığını görmek için benim diski Aranıyor ...
jwhitlock

Yanıtlar:


8

Söylemek istediğiniz fonemleri de girebilirsiniz. Sözdizimi çok karmaşık değil.

Ör:

[[inpt PHON]] hAAIH.

Daha fazla bilgi edinmek için bu bağlantıyı kontrol edin: http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/Phonemes/Phonemes.html#//apple_ref/doc/uid/TP40004365-CH9-SW1


1
Fonetik sözdizimini oluşturmak için Benden Sonra Yinele'yi kullanabilirsiniz. Developer.apple.com/downloads adresinden edinilebilir .
Lri

Repeat After Me , Xcode için Yardımcı Araçlar'ın bir parçasıdır .
Daniel Beck

1
Bu benim için çalıştı: 'Selam Joel [[inpt PHON]] spOWl skiY.' Acaba Adres defterindeki bu artı fonetik alanların hile yapıp
jwhitlock

Bu fonemleri nereye girirdiniz?
Burhan Ali

6
  • Kelime çiftlerinin bir listesini oluşturun [spolsky spowlsky; joel jole; ...].
  • En sevdiğiniz komut dosyası dilinde, kelime çiftleri listenize göre parametre listesindeki sözcüklerin yerine geçen ve değiştirilmiş parametre listesini "/ usr / bin / say" 'a geçiren bir komut dosyası oluşturun.
  • Komut dosyasını yürütülebilir hale getirin, "say" deyin ve $ PATH dosyanızda "/ usr / bin" klasöründen daha önce görünen bir klasöre koyun.
  • Farklı olarak telaffuz edilmesini istediğiniz daha fazla kelime bulduğunuzda kelime çiftleri listenize yazım değişkenleri ekleyin.

Yeni sözünüz eski söz gibi çalışacaktır, ancak tercih ettiğiniz telaffuz ile.


3

@ bruno-carvalho'un yanıtı bu soruyu benim için yanıtladı. Ama aynı zamanda [[inpt TEXT]]metni normal okumaya (konuşma sentezleme) geri döndürme komutunu almak için etiketi avlamak zorunda kaldım. Örneğin:
say [[inpt PHON]] hAAIH, [[inpt TEXT]] how are you?

Umarım bunu cevaba eklemek, bu sorunun sonraki okuyucularına yardımcı olacaktır.


2

Yapabileceğini sanmıyorum. Sistem tercihlerinde varsayılan sesi farklı bir ses tonuna ayarlamayı deneyebilir veya işlerin nasıl telaffuz edilmesini istediğinizi yazabilirsiniz. Örneğin, "Merhaba, Jole Spole gökyüzü."


1
"Spowlsky" ne dersiniz?
Doug Harris

2

Apple'ın orada olduğu gibi göz önüne alındığında, bu talihsiz bir sınırlama. VoiceOver kullanıcıları, VoiceOver İzlencesi'ni (Konuşma-> Telaffuz) kullanarak kendi telaffuzlarını kolayca ekleyebilir. Ancak, VoiceOver ayarları, Safari'de ve Apple tarafından sağlanan diğer uygulamalarda "say" komutuna veya Düzenle-> Konuşma -> "Konuşmayı Başlat" menüsüne uygulanmıyor gibi görünüyor.


0

sayPrograma kelimeleri farklı telaffuz etmeyi 'öğretmenin' bir yolu yoktur . Yukarıda önerildiği gibi, istediğiniz telaffuzu almanın en kolay yolu, kelimelerinizin yazımını istediğiniz gibi söyleyene kadar ayarlamaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.