Como faço para usar um léxico com o SpeechSynthesizer?

Estou realizando algum texto para fala e gostaria de especificar algumas pronúncias especiais em um arquivo de léxico. Eu corriExemplo de AddLexicon do MSDN verbatim, e fala a sentença mas nãonão use o léxico dado, algo parece estar quebrado.

Aqui está o exemplo fornecido:

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();
    }
  }
}

e arquivo de léxico:

<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>

O console é aberto, o texto é falado, mas a nova pronúncia não é usada. Eu, claro, salvei o arquivo parac:\test\whatchamacallit.pls como especificado.

Eu tentei variações do Uri e localização do arquivo (por exemplo,@"C:\Temp\whatchamacallit.pls", @"file:///c:\test\whatchamacallit.pls"), caminhos absolutos e relativos, copiando-os para a pasta de construção, etc.

IrãMonitor de processo e o arquivo énão acessado. Se fosse um problema de permissão de diretório / arquivo (o que não é), ainda veria as mensagens de acesso negado, no entanto, não faço nenhuma referência, exceto a ocasional do meu editor de texto. Eu vejo o arquivo acessado quando tentoFile.OpenRead.

Infelizmente não há mensagens de erro ao usar um Uri de lixo.

Em investigações posteriores, percebi que este exemplo é deMicrosoft.Speech.Synthesisenquanto eu estou usandoSystem.Speech.Synthesis por aqui. No entanto, pelo que posso dizer, eles são idênticos, exceto por algumas informações adicionais e exemplos, e ambos apontam para a mesma especificação. Isso ainda poderia ser o problema?

Verifiquei que o projeto está configurado para usar o .NET Framework 4 adequado.

Eu comparei o exemplo do MSDN paraexemplos da especificação referenciada, bem como tentar aqueles definitivos, mas não ajudou. Considerando que o arquivo não parece ser acessado, não estou surpreso.

(Eu sou capaz de usarPromptBuilder.AppendTextWithPronunciation muito bem, mas é uma alternativa ruim para o meu caso de uso.)

O exemplo no MSDN está quebrado? Como faço para usar um léxico com o SpeechSynthesizer?

questionAnswers(1)

yourAnswerToTheQuestion