Compartilhar via


TextFragment.TextToSpeak Propriedade

Definição

Obtém ou define o texto em fala do 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 da propriedade

Um System.String é retornado ou pode ser usado para definir o texto de fala a ser usado por um mecanismo de síntese de fala para gerar saída de áudio.

Exemplos

O exemplo a seguir faz parte de uma implementação de síntese de fala personalizada herdando de TtsEngineSsmle usando o uso de TextFragment, SpeechEventInfo, FragmentStatee TtsEventId.

A implementação de Speak

  1. Recebe uma matriz de TextFragment instâncias e cria uma nova matriz de TextFragment instâncias a serem passadas para o Speak método em um mecanismo de síntese subjacente.

    Cuidados específicos são usados para respeitar o TextOffset, no original TextFragment ao criar o TextToSpeak nas novas TextFragment instânciasTextLength.

  2. Se o TtsEngineAction valor de enumeração encontrado na Action propriedade no FragmentState retornado pela State propriedade de cada TextFragment instância for Speak, a implementação

    • Traduz o americanismo para os britânicos no texto a ser falado.

    • Se a EventInterest propriedade nas ITtsEngineSite interfaces fornecidas à implementação der suporte ao WordBoundary tipo de evento, uma SpeechEventInfo instância será usada para criar um evento para conduzir um medidor de progresso do sintetizador.

  3. Em seguida, um mecanismo de renderização de fala é chamado com a 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);  

}  

Comentários

O valor padrão dessa propriedade é System.String.Empty.

Os aplicativos são livres para alterar completamente o valor de TextToSpeak.

Redefinir o valor de TextToSpeak não alterará o valor de TextOffset e TextLength.

Aplica-se a