say
Lệ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 say
phá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:
- 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ị.
- 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.
- Sử dụng
dtrace
trong khi chạysay
, 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
- 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à:
say
là 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ơnsay
.- 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.
- Cách dễ nhất để tạo một phiên bản dòng lệnh
say
là 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
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 ...
say
đang sử dụng với-v
?