OS X의 'say'명령이 단어를 발음하는 방법을 어떻게 변경합니까?


14

OS X의 say명령은 일부 작업 (예 : Skype의 '연락처가 온라인 상태가되면 알림')에 유용하지만 일부 이름을 잘못 발음하고 있습니다. say단어를 다르게 발음 하도록 가르치는 방법이 있습니까?

예를 들어 다음을 시도하십시오.

say "Hi, Joel Spolsky"

'ol'은 'old'보다는 'ball'처럼 들립니다. 새로운 언어 규칙을 가르치려고하기보다는 "Pronounce Spolsky like this"라는 예외를 추가하고 싶습니다. 애플이 원하는대로 "iphone"을 발음 할 수있는 방법이 있다고 생각합니다.


업데이트 -몇 가지 연구를 한 후에, 내가 배운 것이 있습니다.

  1. 텍스트 음성 변환은 텍스트를 음소로 변환 한 다음 음성을 사용하여 음소를 오디오로 변환합니다. 음성을 변경해도 음소에는 영향을 미치지 않습니다.
  2. 음성 합성 관리자를 위한 몇 가지 기능이 음소에 텍스트를 회전 및 방법 음성 사전 등록 새 텍스트 - 음소지도를 추가합니다. 그러나 Apple의 음성 사전은 이진 형식이어야합니다. plist XML을 찾지 못했습니다.
  3. 사용하여 dtrace실행하는 동안 say, 나는 /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources에서 열 몇 가지 흥미로운 파일을 발견했다. 아마도 음성 사전 일 수도 있지만 XML 인 Homophones를 제외하고 모두 이진입니다. Homophones에 항목을 추가해도 아무런 효과가 없습니다. 음성 텍스트로 사용됩니다. 또한 Apple에서 서명 한 코드이므로 변경하면 일부 프로그램이 작동하지 않을 수 있습니다.
    • 접두사 사전
    • 카트 이름
    • 카트라이트
    • 기호 사전
    • 호모 폰
  4. 있습니다 방법으로 응용 프로그램 인터페이스 요소의 텍스트 버전 VoiceOver를 작동하므로, 개발자가 무료로 얻을 수있는 많은 추가 할 수는 있지만, 거기에 까다로운 비트 . 여기서 표준은 필요에 따라 발음 철자를 사용하는 것으로 보입니다.

내 추측은 :

  1. saySpeech Synthesis Manager 위에있는 간단한 코드 계층입니다. Apple 개발자는 대체 음소 매핑을 위해 음성 사전 plist로 경로를 지정하는 명령 줄 옵션을 쉽게 추가 할 수 있지만 그렇지 않았습니다. 더 나은 글을 작성하는 것이 유용한 오픈 소스 프로젝트 일 수 있습니다 say.
  2. Skype는 음성 합성 관리자를 직접 사용하여 친구의 이름을 발음하는 방식을 바꿀 수있는 방법이 없습니다.
  3. 커맨드 라인 버전을 만드는 가장 쉬운 방법 say은 JRobert가 제안한 방법입니다.

다음은 Doug Harris의 맞춤법 제안을 사용한 빠른 구현입니다.

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

마지막으로 몇 가지 재미있는 명령 줄이 있습니다.

# 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함께 사용 중인 음성 변경을 시도 했습니까 -v?
Studer

2
발음에는 영향을 미치지 않습니다 : say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'. 음성 목록은 시스템 환경 설정-> 음성-> 텍스트 음성 변환에서 찾을 수 있습니다. 문제는 음성 합성이 아니라 음소 변환에 있습니다. 라이브러리를 직접 호출하는 경우 사용자 정의 음소를 설정할 수 있습니다. developer.apple.com/mac/library/documentation/Carbon/Reference/… Apple 디스크 개발자 가 .plist를 사용했는지 확인하기 위해 디스크 검색 중 ...
jwhitlock

답변:


8

당신은 또한 당신이 말하고 싶은 정확한 음소를 입력 할 수 있습니다. 구문은 그렇게 복잡하지 않습니다.

전의:

[[inpt PHON]] hAAIH.

자세한 내용을 보려면이 링크를 확인하십시오. http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/Phonemes/Phonemes.html#//apple_ref/doc/uid/TP40004365-CH9-SW1


1
나 이후의 반복을 사용하여 음성 구문을 생성 할 수 있습니다. developer.apple.com/downloads 에서 제공됩니다 .
Lri

내 후 반복 은 Xcode 용 보조 도구의 일부입니다 .
Daniel Beck

1
이것은 나를 위해 일했다 : '안녕하세요, 조엘 [[inpt PHON]] 스프링 skIY.' macdailynews.com/2011/10/20/…
jwhitlock

이 음소를 어디에 입력하겠습니까?
Burhan Ali

6
  • 단어 쌍 목록 만들기 [spolsky spowlsky; 조엘 졸; ...].
  • 선호하는 스크립팅 언어로 단어 쌍 목록에 따라 매개 변수 목록의 단어를 대체하고 수정 된 매개 변수 목록을 "/ usr / bin / say"로 전달하는 스크립트를 작성하십시오.
  • 스크립트를 실행 가능하게 만들고 "say"라고 부르고 "/ usr / bin"보다 $ PATH의 이전 폴더에 넣으십시오.
  • 다르게 발음하고 싶은 단어를 더 많이 찾으면 철자 변형을 단어 쌍 목록에 추가하십시오.

새로운 말은 예전 말처럼 작동하지만 선호하는 발음으로 작동합니다.


3

@ bruno-carvalho 님의 답변이이 질문에 답변했습니다. 그러나, [[inpt TEXT]]say 명령이 정상적으로 텍스트 읽기 (음성 합성)로 돌아가도록 태그 를 찾아야했습니다. 예를 들면 다음과 같습니다.
say [[inpt PHON]] hAAIH, [[inpt TEXT]] how are you?

이 답변을 추가하면이 질문을 읽는 독자에게 도움이되기를 바랍니다.


2

나는 당신이 할 수 있다고 생각하지 않습니다. 시스템 환경 설정에서 기본 음성을 다른 음성으로 설정하거나 발음 발음 방법을 입력 할 수 있습니다. 예를 들어 "안녕하세요, 졸레 스폴 하늘."


1
"Spowlsky"는 어떻습니까?
더그 해리스

2

애플이 가장 많은 길을 가고있는 점을 감안하면 이것은 불행한 한계입니다. VoiceOver 사용자는 VoiceOver 유틸리티 (음성-> 발음)를 사용하여 자신의 발음을 쉽게 삽입 할 수 있습니다. 그러나 VoiceOver 설정은 Safari 및 기타 Apple 제공 응용 프로그램의 "say"명령 또는 Edit-> Speech-> "Speech 시작"메뉴에 적용되지 않는 것 같습니다.


0

say단어를 다르게 발음하기 위해 프로그램을 '교육'할 수있는 방법이 없습니다 . 위에서 제안한 바와 같이, 원하는 발음을 얻는 가장 쉬운 방법은 원하는 방식으로 말할 때까지 단어의 철자를 조정하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.