使用 Silverlight 4 COM API 的文本转语音应用程序






4.95/5 (18投票s)
在本文中,我将逐步演示如何使用 Silverlight 4 中的 COM API 创建一个文本转语音应用程序。请阅读。学习并为本文投票。非常欢迎您提供反馈和/或建议。
引言
您听说过文本转语音引擎吗?“是的”,我想。是的,这在计算机世界里并不是什么新鲜事。据我回忆,自 Windows 98 以来它就已存在,但在 Silverlight 中它是全新的。您现在可以使用 Silverlight 应用程序调用 SAPI 引擎,它会将文本转换为语音。听起来不错?这只能通过 COM API 来实现。

在这里,我将描述如何使用 COM API 向 SAPI 引擎发出 TTS 调用。阅读完此处的此主题后,您将能够编写自己的代码来开发具有 Silverlight 4 中文本转语音功能的应用程序。
先决条件
要开发此应用程序,您需要以下工具
- Microsoft Visual Studio 2010
- 适用于 Visual Studio 2010 的 Silverlight 工具
设置好开发环境后,创建一个 Silverlight 项目。如果您不熟悉 Silverlight 应用程序开发,并且想了解 Silverlight 以及如何创建新的 Silverlight 应用程序,请阅读Silverlight 教程。
为 OOB 设置项目
在开始之前,您需要进行一些配置。是的,因为 COM API 仅在 Silverlight 浏览器外应用程序中运行,所以您需要更改项目的设置。
- 右键单击 Silverlight 项目并打开“属性”。
- 勾选“启用应用程序在浏览器外运行”复选框(如下图所示),然后单击“浏览器外设置”按钮。
- 打开设置页面后,从屏幕上设置所需的选项。请务必选中“显示安装菜单”和“在浏览器外运行时需要提升的信任”。
完成这些设置后,您将能够将此 Web 版本安装为浏览器外应用程序。
为动态关键字设置项目
现在您需要为项目添加一个 DLL 程序集引用。由于我们将在示例中使用动态关键字,因此需要添加“Microsoft.CSharp
”程序集引用。
- 为此,右键单击 Silverlight 项目并从菜单中选择“添加引用”。
- 现在,从“添加引用”对话框中,找到“
Microsoft.CSharp
”,选中它,然后单击“确定”。这将为项目添加程序集引用。
设计用户界面
完成所有设置后,就可以设计我们的 UI 了。在 MainPage.xaml 文件中添加一个 TextBox
和一个 Button
并设置它们的名称。在我们的示例中,我使用“txtMessage
”作为 TextBox
的名称,使用“btnSpeak
”作为 Button
的名称。
这是我的 XAML 代码,供您参考
<UserControl x:Class="Silverlight_4_Text_To_Speech_Demo.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
<StackPanel x:Name="LayoutRoot" Orientation="Vertical" Width="320">
<TextBlock FontWeight="Bold" FontSize="14"
Text="Silverlight 4 Text-To-Speech Demo"
Margin="10" TextAlignment="Center" />
<TextBlock Text="Enter some text and click on the 'Speak'
button to read out the entered text."
Margin="10" TextWrapping="Wrap" />
<StackPanel Orientation="Horizontal">
<TextBox x:Name="txtMessage" Width="200" Height="100" Margin="5"
AcceptsReturn="True" TextWrapping="Wrap" />
<Button x:Name="btnSpeak" Content="Speak" Width="100" Height="100"
Margin="5" Click="btnSpeak_Click" />
</StackPanel>
</StackPanel>
</UserControl>
如果您运行它,它将显示如下快照

在这里,我们将使用 TextBox
在其中输入一些文本,一旦单击“Speak”按钮,它将开始朗读输入的文本。要实现此目的,请注册按钮单击事件,然后转到代码隐藏文件中实现文本转语音功能。
玩转代码
现在让我们开始编写代码。打开 MainPage.xaml.cs,在按钮单击事件中,首先从 AutomationFactory
创建一个 Sapi.SpVoice
对象,并将其分配给一个动态变量。
dynamic textToSpeech = AutomationFactory.CreateObject("Sapi.SpVoice");
通过将 Sapi 对象实例的 Volume
属性设置为 100
来设置朗读文本的 Volume
。这将产生最大音量。然后通过将输入的文本作为参数传递给它来调用 Speak()
方法。
这是完整的代码片段
private void btnSpeak_Click(object sender, RoutedEventArgs e)
{
if (App.Current.IsRunningOutOfBrowser && App.Current.HasElevatedPermissions)
{
dynamic textToSpeech = AutomationFactory.CreateObject("Sapi.SpVoice");
textToSpeech.Volume = 100;
textToSpeech.Speak(txtMessage.Text);
}
else
{
MessageBox.Show("Please install it as Trusted Out-of-Browser application.");
}
}
哈哈,我们的应用程序现在可以运行了。构建您的解决方案,检查错误。如果成功,请按 CTRL + F5 运行应用程序。请先将应用程序安装为 Silverlight 浏览器外应用程序。为此,请右键单击 Silverlight UI,然后在上下文菜单中选择“安装”。然后按照安装 UI 中提到的步骤进行操作。
成功安装为浏览器外应用程序后,它将从您的本地驱动器打开已安装的应用程序。在 TextBox 中输入一些文本,然后单击“Speak”按钮。您将听到有人朗读文本。是的,就是这样。您的应用程序现在支持文本转语音。

如果您喜欢此功能,请下载示例应用程序并在您的本地计算机上运行,以查看实时演示。本文的源代码也可在此处找到。
不要忘记为本文投票并留下您的反馈。享受使用 Silverlight 4 的新功能。
历史
- 2010 年 7 月 2 日:初始帖子