Udostępnij za pośrednictwem


Zamiana tekstu na mowę

Przeglądaj przykład. Przeglądanie przykładu

W tym artykule opisano sposób używania interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI). ITextToSpeech Ten interfejs umożliwia aplikacji korzystanie z wbudowanych silników zamiany tekstu na mowę w celu odczytywania tekstu z urządzenia. Można go również użyć do wykonywania zapytań o dostępne języki.

Domyślna implementacja interfejsu ITextToSpeech jest dostępna za pośrednictwem TextToSpeech.Default właściwości . Zarówno ITextToSpeech interfejs, jak i TextToSpeech klasa są zawarte w Microsoft.Maui.Media przestrzeni nazw.

Rozpocznij

Aby uzyskać dostęp do funkcji zamiany tekstu na mowę, wymagana jest następująca konfiguracja specyficzna dla platformy.

Jeśli docelowa wersja systemu Android projektu jest ustawiona na Android 11 (R API 30) lub nowszą, musisz zaktualizować manifest systemu Android za pomocą filtru intencji dla aparatu zamiany tekstu na mowę (TTS). Aby uzyskać więcej informacji na temat intencji, zobacz dokumentację systemu Android dotyczącą intencji i filtrów intencji.

W pliku Platformy/Android/AndroidManifest.xml dodaj następujące queries/intent węzły do węzłamanifest:

<queries>
  <intent>
    <action android:name="android.intent.action.TTS_SERVICE" />
  </intent>
</queries>

Używanie zamiany tekstu na mowę

Zamiana tekstu na mowę działa przez wywołanie metody SpeakAsync z tekstem, który należy wypowiedzieć, co pokazano w poniższym przykładzie kodu.

public async void Speak() =>
    await TextToSpeech.Default.SpeakAsync("Hello World");

Ta metoda przyjmuje wartość opcjonalną CancellationToken , aby zatrzymać wypowiedź po jej uruchomieniu.

CancellationTokenSource cts;

public async Task SpeakNowDefaultSettingsAsync()
{
    cts = new CancellationTokenSource();
    await TextToSpeech.Default.SpeakAsync("Hello World", cancelToken: cts.Token);

    // This method will block until utterance finishes.
}

// Cancel speech if a cancellation token exists & hasn't been already requested.
public void CancelSpeech()
{
    if (cts?.IsCancellationRequested ?? true)
        return;

    cts.Cancel();
}

Zamiana tekstu na mowę spowoduje automatyczne kolejkowanie żądań mowy z tego samego wątku.

bool isBusy = false;

public void SpeakMultiple()
{
    isBusy = true;

    Task.WhenAll(
        TextToSpeech.Default.SpeakAsync("Hello World 1"),
        TextToSpeech.Default.SpeakAsync("Hello World 2"),
        TextToSpeech.Default.SpeakAsync("Hello World 3"))
        .ContinueWith((t) => { isBusy = false; }, TaskScheduler.FromCurrentSynchronizationContext());
}

Ustawienia

Aby sterować głośnością, wysokością i lokalizacją głosu, użyj klasy SpeechOptions. Przekaż wystąpienie tej klasy do metody SpeakAsync(String, SpeechOptions, CancellationToken). Metoda GetLocalesAsync() pobiera zbiór ustawień regionalnych dostarczonych przez system operacyjny.

public async void SpeakSettings()
{
    IEnumerable<Locale> locales = await TextToSpeech.Default.GetLocalesAsync();

    SpeechOptions options = new SpeechOptions()
    {
        Pitch = 1.5f,   // 0.0 - 2.0
        Volume = 0.75f, // 0.0 - 1.0
        Locale = locales.FirstOrDefault()
    };

    await TextToSpeech.Default.SpeakAsync("How nice to meet you!", options);
}

Następujące wartości są obsługiwane dla tych parametrów:

Parametr Minimum Maksimum
Pitch 0 2.0
Volume 0 1.0

Aby sterować głośnością, tonem, szybkością i ustawieniami regionalnymi głosu, użyj klasy SpeechOptions. Przekaż wystąpienie tej klasy do metody SpeakAsync(String, SpeechOptions, CancellationToken). Metoda GetLocalesAsync() pobiera kolekcję ustawień regionalnych udostępnionych przez system operacyjny.

public async void SpeakSettings()
{
    IEnumerable<Locale> locales = await TextToSpeech.Default.GetLocalesAsync();

    SpeechOptions options = new SpeechOptions()
    {
        Pitch = 1.5f,   // 0.0 - 2.0
        Volume = 0.75f, // 0.0 - 1.0
        Rate = 1.5f,    // 0.1 - 2.0
        Locale = locales.FirstOrDefault()
    };

    await TextToSpeech.Default.SpeakAsync("How nice to meet you!", options);
}

Następujące wartości są obsługiwane dla tych parametrów:

Parametr Minimum Maksimum
Pitch 0 2.0
Volume 0 1.0
Rate 0.1 2.0

Ograniczenia

  • Kolejkowanie wypowiedzi nie jest gwarantowane, jeśli jest wywoływane w wielu wątkach.
  • Odtwarzanie dźwięku w tle nie jest oficjalnie obsługiwane.