Làm cách nào tôi có thể thay đổi cách lệnh 'say' của OS X phát âm một từ?


14

sayLệnh của OS X hữu ích cho một số tác vụ (chẳng hạn như Skype 'thông báo cho tôi khi có liên hệ trực tuyến), nhưng nó phát âm một số tên không chính xác. Có cách nào để dạy sayphát âm một từ khác nhau không?

Ví dụ: thử:

say "Hi, Joel Spolsky"

'Ol' nghe giống như 'quả bóng' thay vì 'cũ'. Tôi muốn thêm một ngoại lệ có nội dung "Phát âm Spolsky như thế này", thay vì cố gắng dạy các quy tắc ngôn ngữ mới. Tôi cá là có một cách vì nó có thể phát âm "iphone" như Apple muốn.


Cập nhật - Sau một số nghiên cứu, đây là những gì tôi đã học được:

  1. Chuyển văn bản thành giọng nói được phân chia giữa việc chuyển văn bản thành âm vị và sau đó âm vị được chuyển thành âm thanh bằng giọng nói. Thay đổi giọng nói không ảnh hưởng đến âm vị.
  2. Các Speech Synthesis quản lý có một số chức năng cho chuyển văn bản để âm vị , và một phương pháp để đăng ký một cuốn từ điển ngôn luận mà sẽ thêm bản đồ text-âm vị mới. Tuy nhiên, từ điển bài phát biểu của Apple phải ở dạng nhị phân - Tôi không tìm thấy bất kỳ XML nguyên bản nào.
  3. Sử dụng dtracetrong khi chạy say, tôi đã tìm thấy một số tệp thú vị được mở trong / System / L Library / PrivateFrameworks/SpeechDipedia.framework/Resource. Đây có lẽ là từ điển lời nói, nhưng tất cả chúng đều là nhị phân, ngoại trừ Homophones, là XML. Thêm các mục vào Homophones không làm gì cả - nó có thể được sử dụng trong lời nói thành văn bản. Chúng cũng là mã được ký bởi Apple - việc thay đổi chúng có thể ngăn một số chương trình hoạt động.
    • Tiền tố
    • Tên xe
    • CartLite
    • SymbolDixi
    • Từ đồng âm
  4. Có nhiều cách để thêm phiên bản văn bản của các thành phần giao diện ứng dụng để VoiceOver hoạt động, rất nhiều trong số đó được nhà phát triển nhận miễn phí, nhưng có những bit khó . Tiêu chuẩn ở đây dường như là sử dụng một cách đánh vần ngữ âm khi cần thiết.

Tôi đoán là:

  1. saylà một lớp mã nhẹ trên đầu Trình quản lý tổng hợp lời nói. Sẽ dễ dàng cho các nhà phát triển của Apple thêm tùy chọn dòng lệnh để đi theo đường dẫn đến một từ điển lời nói để ánh xạ âm vị thay thế, nhưng họ đã không làm vậy. Nó có thể là một dự án nguồn mở hữu ích để viết tốt hơn say.
  2. Skype có thể sử dụng Trình quản lý tổng hợp lời nói trực tiếp, không để lại thay đổi cách phát âm tên của bạn tôi, ngoài việc đánh vần chúng theo ngữ âm, điều này thật ngớ ngẩn.
  3. Cách dễ nhất để tạo một phiên bản dòng lệnh saylà cách JRobert đề xuất.

Đây là cách triển khai nhanh của tôi, sử dụng đề xuất chính tả của Doug Harris:

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

Cuối cùng, một số công cụ dòng lệnh thú vị:

# 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

Bạn đã thử thay đổi giọng nói sayđang sử dụng với -v?
Studer

2
Không ảnh hưởng đến phát âm : say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'. Danh sách các giọng nói có thể được tìm thấy tại System Preferences -> Speech -> Text to Speech. Vấn đề là ở bản dịch âm vị, không phải ở giọng nói tổng hợp. Nếu bạn đang gọi trực tiếp thư viện, bạn có thể đặt các âm vị tùy chỉnh: developer.apple.com/mac/l Library / document / Carbon / Reference / bia Tìm kiếm đĩa của tôi để xem các nhà phát triển của Apple có sử dụng .plist ...
jwhitlock

Câu trả lời:


8

Vâng, bạn cũng có thể nhập chính xác các âm vị bạn muốn nói. Cú pháp không quá phức tạp.

Ví dụ:

[[in PHON]] hAAIH.

Kiểm tra liên kết này để tìm hiểu thêm: http://developer.apple.com/l Library / mac / # document /UserExperience / Conception


1
Bạn có thể sử dụng Lặp lại sau tôi để tạo cú pháp ngữ âm. Nó có sẵn từ developer.apple.com/downloads .
Lri

Lặp lại sau tôi là một phần của Công cụ phụ trợ cho Xcode .
Daniel Beck

1
Điều này làm việc cho tôi: nói 'Xin chào, Joel [[inpt PHON]] spOWl skIY.' Tôi tự hỏi nếu điều này cộng với các trường ngữ âm trong sổ Địa chỉ sẽ thực hiện thủ thuật: macdailynews.com/2011/10/20/ mẹo
jwhitlock

Bạn sẽ nhập những âm vị này ở đâu?
Burhan Ali

6
  • Tạo một danh sách các cặp từ [spolsky spowlsky; tham gia jole; ...]
  • Tạo một tập lệnh bằng ngôn ngữ kịch bản lệnh yêu thích của bạn thay thế các từ trong danh sách tham số của nó theo danh sách các cặp từ của bạn và chuyển danh sách tham số đã sửa đổi thành "/ usr / bin / say".
  • Làm cho tập lệnh có thể thực thi được, gọi nó là "say" và đặt nó vào một thư mục xuất hiện sớm hơn trong $ PATH của bạn so với "/ usr / bin".
  • Thêm các biến thể chính tả vào danh sách các cặp từ của bạn khi bạn tìm thấy nhiều từ bạn muốn phát âm khác nhau.

Câu nói mới của bạn sẽ hoạt động giống như câu nói cũ, nhưng với cách phát âm ưa thích của bạn.


3

Câu trả lời của @ bruno-carvalho đã trả lời câu hỏi này cho tôi. Nhưng, tôi cũng cần phải tìm kiếm thẻ [[inpt TEXT]]để nhận lệnh say để quay lại đọc văn bản (tổng hợp giọng nói) bình thường. Ví dụ:
say [[inpt PHON]] hAAIH, [[inpt TEXT]] how are you?

Hy vọng rằng, thêm điều này vào câu trả lời sẽ giúp người đọc tiếp theo của câu hỏi này.


2

Tôi không nghĩ bạn có thể. Bạn có thể thử đặt giọng nói mặc định thành giọng nói khác trong tùy chọn hệ thống hoặc bạn có thể nhập cách bạn muốn mọi thứ được phát âm. Ví dụ: "Xin chào, Jole Spole bầu trời."


1
"Spowlsky" thì sao?
Doug Harris

2

Đây là một hạn chế đáng tiếc, cho rằng Apple dường như là hầu hết các cách đó. Người dùng VoiceOver có thể dễ dàng chèn các phát âm của riêng họ bằng Tiện ích VoiceOver (Speech-> Phát âm). Nhưng, cài đặt VoiceOver dường như không áp dụng cho lệnh "say" hoặc menu Chỉnh sửa-> Bài phát biểu -> "Bắt đầu bài phát biểu" trong Safari và các ứng dụng khác do Apple cung cấp.


0

Không có cách nào để 'dạy' saychương trình phát âm các từ khác nhau. Như đã đề xuất ở trên, cách dễ nhất để có được cách phát âm mà bạn muốn là điều chỉnh chính tả các từ của bạn cho đến khi nó nói theo cách bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.