65.9K
CodeProject 正在变化。 阅读更多。
Home

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

2010年7月2日

CPOL

4分钟阅读

viewsIcon

57085

downloadIcon

981

在本文中,我将逐步演示如何使用 Silverlight 4 中的 COM API 创建一个文本转语音应用程序。请阅读。学习并为本文投票。非常欢迎您提供反馈和/或建议。

引言

您听说过文本转语音引擎吗?“是的”,我想。是的,这在计算机世界里并不是什么新鲜事。据我回忆,自 Windows 98 以来它就已存在,但在 Silverlight 中它是全新的。您现在可以使用 Silverlight 应用程序调用 SAPI 引擎,它会将文本转换为语音。听起来不错?这只能通过 COM API 来实现。

在这里,我将描述如何使用 COM API 向 SAPI 引擎发出 TTS 调用。阅读完此处的此主题后,您将能够编写自己的代码来开发具有 Silverlight 4 中文本转语音功能的应用程序。

先决条件

要开发此应用程序,您需要以下工具

  1. Microsoft Visual Studio 2010
  2. 适用于 Visual Studio 2010 的 Silverlight 工具

设置好开发环境后,创建一个 Silverlight 项目。如果您不熟悉 Silverlight 应用程序开发,并且想了解 Silverlight 以及如何创建新的 Silverlight 应用程序,请阅读Silverlight 教程

为 OOB 设置项目

在开始之前,您需要进行一些配置。是的,因为 COM API 仅在 Silverlight 浏览器外应用程序中运行,所以您需要更改项目的设置。

  • 右键单击 Silverlight 项目并打开“属性”。
  • 勾选“启用应用程序在浏览器外运行”复选框(如下图所示),然后单击“浏览器外设置”按钮。

    image

  • 打开设置页面后,从屏幕上设置所需的选项。请务必选中“显示安装菜单”和“在浏览器外运行时需要提升的信任”。

    image

完成这些设置后,您将能够将此 Web 版本安装为浏览器外应用程序。

为动态关键字设置项目

现在您需要为项目添加一个 DLL 程序集引用。由于我们将在示例中使用动态关键字,因此需要添加“Microsoft.CSharp”程序集引用。

  • 为此,右键单击 Silverlight 项目并从菜单中选择“添加引用”。

    image

  • 现在,从“添加引用”对话框中,找到“Microsoft.CSharp”,选中它,然后单击“确定”。这将为项目添加程序集引用。

    image

设计用户界面

完成所有设置后,就可以设计我们的 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>

如果您运行它,它将显示如下快照

image

在这里,我们将使用 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.");
    }
}

Party smile 哈哈,我们的应用程序现在可以运行了。构建您的解决方案,检查错误。如果成功,请按 CTRL + F5 运行应用程序。请先将应用程序安装为 Silverlight 浏览器外应用程序。为此,请右键单击 Silverlight UI,然后在上下文菜单中选择“安装”。然后按照安装 UI 中提到的步骤进行操作。

成功安装为浏览器外应用程序后,它将从您的本地驱动器打开已安装的应用程序。在 TextBox 中输入一些文本,然后单击“Speak”按钮。您将听到有人朗读文本。是的,就是这样。您的应用程序现在支持文本转语音。

image

如果您喜欢此功能,请下载示例应用程序并在您的本地计算机上运行,以查看实时演示。本文的源代码也可在此处找到。

不要忘记为本文投票并留下您的反馈。享受使用 Silverlight 4 的新功能。

历史

  • 2010 年 7 月 2 日:初始帖子
© . All rights reserved.