say
Polecenie OS X jest przydatne do niektórych zadań (takich jak Skype „powiadamiaj mnie, gdy kontakt wejdzie w tryb online), ale niepoprawnie wymawia niektóre nazwy. Czy istnieje sposób nauczenia say
wymawiania słowa w inny sposób?
Na przykład spróbuj:
say "Hi, Joel Spolsky"
„OL” brzmi bardziej jak „piłka” niż „stara”. Chciałbym dodać wyjątek, który mówi „wymawiaj Spolsky w ten sposób”, zamiast próbować uczyć nowych zasad językowych. Założę się, że istnieje sposób, ponieważ może wymówić „iPhone”, jak chce Apple.
Aktualizacja - po kilku badaniach dowiedziałem się:
- Funkcja zamiany tekstu na mowę jest dzielona między zamianę tekstu na fonemy, a następnie fonemy zamieniane są na dźwięk za pomocą głosu. Zmiana głosu nie wpływa na fonemy.
- Speech Synthesis Menedżer ma pewne funkcje dla toczenia tekst fonemów , oraz sposób rejestracji słownika mowy , które będą dodawać nowe mapy text-fonemy. Jednak słownik mowy Apple musi być w formie binarnej - nie znalazłem żadnego plist XML.
- Korzystanie
dtrace
podczas jazdysay
, znalazłem kilka ciekawych plików otwartych w /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources. Jest to prawdopodobnie słownik mowy, ale wszystkie są binarne, z wyjątkiem homofonów, czyli XML. Dodanie wpisów do homofonów nic nie robi - prawdopodobnie jest używane w mowie i tekście. Są również podpisane przez Apple kodem - ich zmiana może uniemożliwić działanie niektórych programów.- PrefixDictionary
- CartNames
- CartLite
- SymbolDictionary
- Homofony
- Istnieją sposoby dodawania tekstowych wersji elementów interfejsu aplikacji, dzięki czemu VoiceOver działa, z których wiele deweloper otrzymuje za darmo, ale są trudne . Wydaje się, że w tym przypadku standardem jest pisownia fonetyczna.
Moje domysły to:
say
to lekka warstwa kodu na szczycie Menedżera syntezy mowy. Deweloperom Apple byłoby łatwo dodać opcję wiersza poleceń, aby przejść ścieżkę do listy słownika mowy dla alternatywnego mapowania fonemów, ale nie zrobili tego. Pisanie lepszego może być użytecznym projektem typu open sourcesay
.- Skype prawdopodobnie korzysta bezpośrednio z Menedżera syntezy mowy, nie pozostawiając żadnych haczyków, aby zmienić sposób wymawiania nazwisk mojego przyjaciela, poza pisaniem ich fonetycznie, co jest głupie.
- Najprostszym sposobem na wykonanie wersji wiersza poleceń
say
jest zasugerowanie JRobert.
Oto moja szybka implementacja, używając sugestii pisowni Douga Harrisa:
#!/bin/sh
echo $@ | tr '[A-Z]' '[a-z]' |
sed "s/spolsky/spowlsky/g" |
/usr/bin/say
Na koniec kilka fajnych rzeczy z wiersza poleceń:
# 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
say
używasz-v
?say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'
. Lista głosów znajduje się w Preferencjach systemowych -> Mowa -> Tekst na mowę. Problem polega na tłumaczeniu fonemów, a nie na syntezie głosu. Jeśli bezpośrednio wywołujesz bibliotekę, możesz ustawić niestandardowe fonemy: developer.apple.com/mac/library/documentation/Carbon/Reference/... Przeszukując mój dysk, aby sprawdzić, czy twórcy Apple użyli .plist ...Odpowiedzi:
Cóż, możesz również wprowadzić dokładnie fonemy, które chcesz wypowiedzieć. Składnia nie jest tak skomplikowana.
Dawny:
[[inpt PHON]] hAAIH.
Sprawdź ten link, aby dowiedzieć się więcej: http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/Phonemes/Phonemes.html#//apple_ref/doc/uid/TP40004365-CH9-SW1
źródło
Twoje nowe powiedzenie będzie działało jak stare, ale z preferowaną wymową.
źródło
Odpowiedź bruno-carvalho na mnie odpowiedziała na to pytanie. Ale musiałem również wyśledzić znacznik,
[[inpt TEXT]]
aby polecenie say powróciło do normalnego czytania (syntezowania mowy) tekstu. Na przykład:say [[inpt PHON]] hAAIH, [[inpt TEXT]] how are you?
Mam nadzieję, że dodanie tego do odpowiedzi pomoże kolejnym czytelnikom tego pytania.
źródło
Nie sądzę, że możesz. Możesz spróbować ustawić domyślny głos na inny w preferencjach systemowych lub wpisać, jak chcesz, aby słowa były wymawiane. Na przykład „Cześć, Jole Spole sky”.
źródło
Jest to niefortunne ograniczenie, biorąc pod uwagę, że Apple wydaje się być w większości przypadków. Użytkownicy VoiceOver mogą łatwo wstawiać własne wymowy za pomocą Narzędzia VoiceOver (mowa-> wymowa). Jednak ustawienia VoiceOver nie wydają się mieć zastosowania do polecenia „powiedz” ani menu Edycja-> Mowa -> „Rozpocznij mowę” w przeglądarce Safari i innych aplikacjach Apple.
źródło
Nie ma sposobu, aby „nauczyć”
say
program wymowy słów w inny sposób. Jak zasugerowano powyżej, najłatwiejszym sposobem na uzyskanie wymowy, którą chcesz, jest dostosowanie pisowni słów, tak aby były wymawiane tak, jak chcesz.źródło