我如何使用文本到语音
本文关键字:语音 文本 何使用 | 更新日期: 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
}
}
我得到一些错误和警告:
在线:
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的未来版本中不存在,因此您应该使用其他方法