我如何使用文本到语音

本文关键字:语音 文本 何使用 | 更新日期: 2023-09-27 18:03:16

我用的是xamarin。还有安卓项目。我创建了一个新类,并添加了以下代码:

using System;
using Android.Speech.Tts;
using System.Collections.Generic;

namespace App1
{
    public class TextToSpeech_Android : Java.Lang.Object, ITextToSpeech, TextToSpeech.IOnInitListener
    {
        TextToSpeech speaker; string toSpeak;
        public TextToSpeech_Android() { }
        public void Speak(string text)
        {
            var c = Forms.Context;
            toSpeak = text;
            if (speaker == null)
            {
                speaker = new TextToSpeech(c, this);
            }
            else
            {
                var p = new Dictionary<string, string>();
                speaker.Speak(toSpeak, QueueMode.Flush, p);
                System.Diagnostics.Debug.WriteLine("spoke " + toSpeak);
            }
        }
        #region IOnInitListener implementation
        public void OnInit(OperationResult status)
        {
            if (status.Equals(OperationResult.Success))
            {
                System.Diagnostics.Debug.WriteLine("speaker init");
                var p = new Dictionary<string, string>();
                speaker.Speak(toSpeak, QueueMode.Flush, p);
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("was quiet");
            }
        }
        #endregion
    }
}

我得到一些错误和警告:

  1. 在线:

    var c = Forms.Context

表单不存在。表单的作用和如何修复它?

  • 在线:

    public class TextToSpeech_Android : Java.Lang.Object, ITextToSpeech, TextToSpeech.IOnInitListener

  • ITextToSpeech不存在。

    在同一行中:

    speaker.Speak(toSpeak, QueueMode.Flush, p);
    

    我收到警告信息:

    警告3 'Android.Speech.Tts.TextToSpeech. '(字符串,Android.Speech.Tts说话。QueueMode, system . collections . generic . dictionary)'已过时:'"deprecated"

    我想在我的程序中做的是我在程序中放入字符串的文本,当我运行我的程序时,它会在我的手机上以语音读取字符串中的文本。

    修复错误后,我如何在主活动中使用类?

    using System;
    using Android.App;
    using Android.Content;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS;
    using Android.Speech.Tts;
    namespace App1
    {
        [Activity(Label = "App1", MainLauncher = true, Icon = "@drawable/icon")]
        public class MainActivity : Activity
        {
            int count = 1;
    
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                // Set our view from the "main" layout resource
                SetContentView(Resource.Layout.Main);
    
    
                // Get our button from the layout resource,
                // and attach an event to it
                Button button = FindViewById<Button>(Resource.Id.MyButton);
                button.Click += delegate {
                    button.Text = string.Format("{0} clicks!", count++);
                };
            }
    
        }
    }
    

    我如何使用文本到语音

    你应该遵循并阅读教程的每一部分。

    1)将以下语句添加到文件的顶部(TextToSpeech_Android.cs)

    using Xamarin.Forms;
    

    2)创建ITextToSpeech接口

    public interface ITextToSpeech
    {
        void Speak (string text);
    }
    

    3)该方法已被弃用,这意味着它可能在Android的未来版本中不存在,因此您应该使用其他方法