¿Cómo uso un léxico con SpeechSynthesizer?

Estoy realizando una conversión de texto a voz y me gustaría especificar algunas pronunciaciones especiales en un archivo de léxico. He corridoEjemplo de AddLexicon de MSDN literalmente, y habla la frase pero lo haceno Utilice el léxico dado, algo parece estar roto.

Aquí está el ejemplo proporcionado:

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

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

Se abre la consola, se pronuncia el texto, pero no se usa la nueva pronunciación. Por supuesto he guardado el archivo enc:\test\whatchamacallit.pls Como se especificó.

He intentado variaciones de Uri y la ubicación del archivo (por ejemplo,@"C:\Temp\whatchamacallit.pls", @"file:///c:\test\whatchamacallit.pls"), rutas absolutas y relativas, copiándolo en la carpeta de compilación, etc.

corríMonitor de proceso y el archivo esno accedido. Si se tratara de un problema de permiso de directorio / archivo (que no lo es) todavía vería los mensajes de acceso denegado, sin embargo, no registro ninguna referencia en absoluto excepto la ocasional de mi editor de texto. Veo el archivo accedido cuando intentoFile.OpenRead.

Desafortunadamente no hay mensajes de error cuando se utiliza un Uri de basura.

En una mayor investigación me di cuenta de que este ejemplo es deMicrosoft.Speech.Synthesis, mientras que estoy usandoSystem.Speech.Synthesis aqui. Sin embargo, por lo que puedo decir, son idénticos, excepto por información adicional y ejemplos, y ambos apuntan a la misma especificación. ¿Podría seguir siendo el problema?

Verifiqué que el proyecto está configurado para usar el .NET Framework 4 adecuado.

Comparé el ejemplo de MSDN conejemplos de la especificación referenciada, además de probarlos abiertamente pero no ha ayudado. Teniendo en cuenta que el archivo no parece ser accedido, no estoy sorprendido.

(Soy capaz de usarPromptBuilder.AppendTextWithPronunciation bien, pero es una mala alternativa para mi caso de uso.)

¿Está roto el ejemplo en MSDN? ¿Cómo uso un léxico con SpeechSynthesizer?

Respuestas a la pregunta(1)

Su respuesta a la pregunta