Tôi đang thực hiện một số chuyển văn bản thành giọng nói và tôi muốn chỉ định một số cách phát âm đặc biệt trong tệp từ vựng. Tôi đã chạy MSDN's AddLexicon example nguyên văn, và nó nói câu nhưng nó không sử dụng từ vựng đã cho, một cái gì đó dường như bị hỏng.Làm cách nào để sử dụng từ vựng với SpeechSynthesizer?
Dưới đây là ví dụ được cung cấp:
using System;
using Microsoft.Speech.Synthesis;
namespace SampleSynthesis
{
class Program
{
static void Main(string[] args)
{
// Initialize a new instance of the SpeechSynthesizer.
using (SpeechSynthesizer synth = new SpeechSynthesizer())
{
// Configure the audio output.
synth.SetOutputToDefaultAudioDevice();
PromptBuilder builder = new PromptBuilder();
builder.AppendText("Gimme the whatchamacallit.");
// Append the lexicon file.
synth.AddLexicon(new Uri("c:\\test\\whatchamacallit.pls"), "application/pls+xml");
// Speak the prompt and play back the output file.
synth.Speak(builder);
}
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
và từ vựng file:
<lexicon version="1.0"
xmlns="http://www.w3.org/2005/01/pronunciation-lexicon"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon
http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd"
alphabet="x-microsoft-ups" xml:lang="en-US">
<lexeme>
<grapheme> whatchamacallit </grapheme>
<phoneme> W S1 AX T CH AX M AX K S2 AA L IH T </phoneme>
</lexeme>
</lexicon>
Giao diện điều khiển mở ra, đọc văn bản, nhưng cách phát âm mới không được sử dụng. Dĩ nhiên tôi đã lưu tập tin vào c:\test\whatchamacallit.pls
như được chỉ định.
Tôi đã thử các biến thể của Uri và tập tin vị trí (ví dụ @"C:\Temp\whatchamacallit.pls"
, @"file:///c:\test\whatchamacallit.pls"
), đường dẫn tuyệt đối và tương đối, sao chép nó vào thư mục build vv
Tôi chạy Process Monitor và tập tin được không được truy cập. Nếu đó là một vấn đề về thư mục/tập tin (không phải là nó), tôi vẫn sẽ thấy các tin nhắn bị từ chối truy cập, tuy nhiên tôi không đăng nhập tham chiếu ngoại trừ một thư thỉnh thoảng từ trình soạn thảo. Tôi thấy tệp được truy cập khi tôi thử File.OpenRead
.
Rất tiếc, không có thông báo lỗi khi sử dụng thùng rác Uri.
Khi điều tra thêm, tôi nhận ra ví dụ này là từ Microsoft.Speech.Synthesis, trong khi tôi đang sử dụng System.Speech.Synthesis ở đây. Tuy nhiên từ những gì tôi có thể nói họ giống hệt nhau ngoại trừ một số thông tin bổ sung và các ví dụ và cả hai điểm đến cùng một đặc điểm kỹ thuật. Điều này vẫn có thể là vấn đề?
tôi xác nhận dự án được thiết lập để sử dụng .NET Framework thích 4.
Tôi đã so sánh ví dụ từ MSDN để examples from the referenced spec, cũng như cố gắng những hoàn toàn nhưng nó đã không giúp. Xem xét các tập tin dường như không được truy cập tôi không ngạc nhiên.
(Tôi có thể sử dụng PromptBuilder.AppendTextWithPronunciation
tốt nhưng đó là một sự thay thế nghèo đối với trường hợp sử dụng của tôi.)
là ví dụ trên MSDN bị hỏng? Làm thế nào để sử dụng một từ vựng với SpeechSynthesizer?
Tôi có nghĩa là từ những gì tôi có thể cho biết _documentation_ giống hệt nhau. Cuối cùng là một câu trả lời! Cảm ơn! –
Các tài liệu là giống hệt nhau và điều này đã không được đề cập bất cứ nơi nào như là một lỗi được biết đến, đó là khá lạ. Dù sao, bạn được chào đón, hy vọng nó sẽ giúp :) –
Vâng, chỉ đơn giản là không làm việc cả. –