Compartir a través de


TextFragment.TextToSpeak Propiedad

Definición

Obtiene o establece el texto de voz del fragmento.

public:
 property System::String ^ TextToSpeak { System::String ^ get(); void set(System::String ^ value); };
public string TextToSpeak { get; set; }
member this.TextToSpeak : string with get, set
Public Property TextToSpeak As String

Valor de propiedad

System.String se devuelve o se puede usar para establecer el texto de voz que se usará en un motor de síntesis de voz para generar la salida de sonido.

Ejemplos

El ejemplo siguiente forma parte de una implementación de síntesis de voz personalizada que hereda de TtsEngineSsmly mediante el uso de TextFragment, SpeechEventInfo, FragmentStatey TtsEventId.

La implementación de Speak

  1. Recibe una matriz de TextFragment instancias y crea una nueva matriz de instancias que se pasarán al Speak método en un motor de TextFragment síntesis subyacente.

    Se usa especial cuidado para respetar , TextOffsetTextLength en el original TextFragment al crear en TextToSpeak las nuevas TextFragment instancias.

  2. Si el TtsEngineAction valor de enumeración encontrado de la Action propiedad en el FragmentState devuelto por la State propiedad de cada TextFragment instancia es Speak, la implementación

    • Traduce el americanismo a los britishismos en el texto que se va a hablar.

    • Si la EventInterest propiedad de las ITtsEngineSite interfaces proporcionadas a la implementación admite el WordBoundary tipo de evento, se usa una SpeechEventInfo instancia para crear un evento para controlar un medidor de progreso del sintetizador.

  3. A continuación, se llama a un motor de representación de voz con la matriz modificada TextFragment .

private const int WordBoundaryFlag = 1 << (int)TtsEventId.WordBoundary;  
private readonly char[] spaces = new char[] { ' ', '\t', '\r', '\n' };  
internal struct UsVsUk  
{  
  internal string UK;  
  internal string US;  
}  

override public void Speak (TextFragment [] frags, IntPtr wfx, ITtsEngineSite site)  
{  
  TextFragment [] newFrags=new TextFragment[frags.Length];  

  for (int i=0;i<frags.Length;i++){  
    newFrags[i].State=frags[i].State;  
    //truncate  
    newFrags[i].TextToSpeak = frags[i].TextToSpeak.Substring(frags[i].TextOffset,  
                               frags[i].TextLength);  
    newFrags[i].TextLength = newFrags[i].TextToSpeak.Length;  
    newFrags[i].TextOffset = 0;  
    if (newFrags[i].State.Action == TtsEngineAction.Speak) {  
      //Us to UK conversion  
      foreach (UsVsUk term in TransList) {  
      newFrags[i].TextToSpeak.Replace(term.US, term.UK);  
      }  
      //Generate progress meter events if supported  
      if ((site.EventInterest & WordBoundaryFlag) != 0) {  
      string[] subs = newFrags[i].TextToSpeak.Split(spaces);  

      foreach (string s in subs) {  
        int offset = newFrags[i].TextOffset;  
        SpeechEventInfo spEvent = new SpeechEventInfo((Int16)TtsEventId.WordBoundary,   
                (Int16)EventParameterType.Undefined,   
                 s.Length, new IntPtr(offset));  
        offset += s.Length;  
        if (s.Trim().Length > 0) {  
          SpeechEventInfo[] events = new SpeechEventInfo[1];  
          events[0] = spEvent;  
          site.AddEvents(events, 1);  
        }  
      }  
      }  
    }  
  }  

  _baseSynthesize.Speak(newFrags, wfx, site);  

}  

Comentarios

El valor predeterminado de esta propiedad es System.String.Empty.

Las aplicaciones son gratuitas para cambiar completamente el valor de TextToSpeak.

Restablecer el valor de TextToSpeak no cambiará el valor de TextOffset y TextLength.

Se aplica a