亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 技術開發 > 正文

Windows Phone8中實現文本發音(Text to speech)

2023-06-15 12:14:55
字體:
來源:轉載
供稿:網友

編輯和運行Windows Phone應用是件很容易的事情,你只需在微軟網站獲取一個免費的工具包,在AppHub注冊后,并跟著入門教程學習就可以了。

XAML是我的慣用格式。. WP7開發者也許能注意到應用程序標題和頁名不再是默認的硬編碼,而是通過通過應用的共享資源來實現。通過這種方式,你不必再每次再所有頁中設置應用名稱。

<phone:PhoneApplicationPage    x:Class="TextToSpeechDemo.MainPage"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d"    FontFamily="{StaticResource PhoneFontFamilyNormal}"    FontSize="{StaticResource PhoneFontSizeNormal}"    Foreground="{StaticResource PhoneForegroundBrush}"    SupportedOrientations="Portrait" Orientation="Portrait"    shell:SystemTray.IsVisible="True">    <!--LayoutRoot is the root grid where all page content is placed-->    <Grid x:Name="LayoutRoot" Background="Transparent">        <Grid.RowDefinitions>            <RowDefinition Height="Auto"/>            <RowDefinition Height="*"/>        </Grid.RowDefinitions>        <!--TitlePanel contains the name of the application and page title-->        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">            <TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}"/>            <TextBlock Text="{Binding Path=LocalizedResources.PageTitle, Source={StaticResource LocalizedStrings}}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>        </StackPanel>        <!--ContentPanel - place additional content here-->        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">            <StackPanel>                <ScrollViewer Height="200">                    <ComboBox HorizontalAlignment="Left" Width="456" Name="voicesComboBox" DisplayMemberPath="Name" />                </ScrollViewer>                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">                    <RadioButton Content="Male" IsChecked="true" Name="MaleRadioButton"/>                    <RadioButton Content="Female"/>                </StackPanel>                <TextBox HorizontalAlignment="Left" Height="230" TextWrapping="Wrap" Width="456" Text="I may be a sorry case, but I don't write jokes in base 13." Name="inputTextBox"/>                <Button Content="Speak to me" HorizontalAlignment="Left" Width="456" Click="SpeakToMe_Click"/>            </StackPanel>        </Grid>    </Grid></phone:PhoneApplicationPage>

下面是.xaml主頁的代碼文件。其內容大部分借用自WP8 SDK的文檔。我加入了一些錯誤檢測的內容以及性別選擇和發音語言選擇的功能。

using System;using System.Linq;using System.Windows;using Microsoft.Phone.Controls;using Windows.Phone.Speech.Synthesis; namespace TextToSpeechDemo{    public partial class MainPage : PhoneApplicationPage    {        SpeechSynthesizer synth;        // Constructor        public MainPage()        {            InitializeComponent();            voicesComboBox.ItemsSource = new MyLocals().Items();        }         private async void SpeakToMe_Click(object sender, RoutedEventArgs e)        {            if (voicesComboBox.SelectedIndex == -1)            {                MessageBox.Show("Please select a language.");            }            else            {                if (string.IsNullOrEmpty(inputTextBox.Text))                {                    MessageBox.Show("Please enter some text.");                }                else                {                    try                    {                        // Initialize the SpeechSynthesizer object.                        synth = new SpeechSynthesizer();                         var myLocal = (MyLocale)voicesComboBox.SelectedItem;                         // Query for a voice. Results rdered by Gender to ensure the order always goes Female then Male.                        var voices = (from voice in InstalledVoices.All                                      where voice.Language == myLocal.Lcid                                      select voice).OrderByDescending(v => v.Gender);                         // gender: 0 = Female, 1 = Male. Corresponds to the index of the above results.                        int gender = 0;                        if (MaleRadioButton.IsChecked == true) gender = 1; else gender = 0;                         // Set the voice as identified by the query.                        synth.SetVoice(voices.ElementAt(gender));                         // Speak                        await synth.SpeakTextAsync(inputTextBox.Text);                    }                    catch (Exception ex)                    {                        MessageBox.Show(ex.Message);                    }                }            }        }    }}

下面兩個類是用來填充發音語言的下拉列表框和檢測安裝的聲音。 里面包含30項(15種語言 x 2種聲音)。 通過LINQ查詢可以獲取所需的聲音信息對象,這里可以給出12種語言,而另外3種仍需深入了解。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace TextToSpeechDemo{    class MyLocale    {        public MyLocale(string name, string lcid)        {            _name = name;            _lcid = lcid;        }         private string _name;        public string Name        {            get { return _name; }            set { _name = value; }        }         private string _lcid;        public string Lcid        {            get { return _lcid; }            set { _lcid = value; }        }    }     class MyLocals    {        private IList<MyLocale> _myLocals;         public MyLocals()        {            _myLocals = new List<MyLocale>();             _myLocals.Add(new MyLocale("Chinese Simplified (PRC)", "zh-CN"));            _myLocals.Add(new MyLocale("Chinese Traditional (Taiwan)", "zh-TW"));            _myLocals.Add(new MyLocale("English (United States)", "en-US"));            _myLocals.Add(new MyLocale("English (United Kingdom)", "en-GB"));            _myLocals.Add(new MyLocale("French (France)", "fr-FR"));            _myLocals.Add(new MyLocale("German (Germany)", "de-DE"));            _myLocals.Add(new MyLocale("Italian (Italy)", "it-IT"));            _myLocals.Add(new MyLocale("Japanese (Japan)", "ja-JP"));            _myLocals.Add(new MyLocale("Polish (Poland)", "pl-PL"));            _myLocals.Add(new MyLocale("Portuguese (Brazil)", "pt-BR"));            _myLocals.Add(new MyLocale("Russian (Russia)", "ru-RU"));            _myLocals.Add(new MyLocale("Spanish (Spain)", "es-ES"));        }         public IEnumerable<MyLocale> Items()        {            return (IEnumerable<MyLocale>)_myLocals;        }    }}

接下來的事情是設置 ID_CAP_SPEECH_RECOGNITION功能,否則將拋出異常。

現在,我們如果運行應用將得到下面的結果,選擇一種語言并單擊按鈕,則這個仿真器會與你交談。

我注意到一件事:如果我選擇一個非英語語言而輸入英語文本的話,則其發音帶有口音。當我將文本設置為發育的數字文本:1, 2, 3, 4,同時將語言設置為與法語相似的語言(如西班牙語),則其對“4”的發音是西班牙語,而非法語,這聽起來很有趣。

本文說明:

本文翻譯的國外作者的一篇文章,在翻譯時省略了一些內容,由于水平有限,個別內容獲取翻譯不夠準備卻,敬請給出意見或建議。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久国产精品www| 午夜欧美大片免费观看| 久久久久久久国产精品| 国产精品无码专区在线观看| 亚洲国产91色在线| 亚洲欧美日韩天堂| 91精品国产乱码久久久久久久久| 日韩精品免费在线观看| 国产91热爆ts人妖在线| 日韩精品免费视频| 日韩成人在线视频观看| 欧美日韩国产丝袜美女| 国产在线精品一区免费香蕉| 欧美黑人xxxx| 成人信息集中地欧美| 中文字幕日韩av电影| 国内揄拍国内精品少妇国语| 伦理中文字幕亚洲| 茄子视频成人在线| 成人久久18免费网站图片| 欧美激情在线狂野欧美精品| 91黄色8090| 精品中文字幕在线2019| 国产97在线|日韩| 国产欧美精品久久久| 欧美激情视频在线免费观看 欧美视频免费一| 欧美裸身视频免费观看| 成人做爰www免费看视频网站| 亚洲精品第一国产综合精品| 国产精品久久久久久久久久| 国产日本欧美一区| 国产精品久久久久免费a∨大胸| 欧美日韩国产在线播放| 欧美xxxx18性欧美| 午夜精品视频网站| 国产美女高潮久久白浆| 不卡在线观看电视剧完整版| 日韩在线视频播放| 国产成人精品最新| 亚洲欧美中文日韩在线v日本| 欧美激情视频在线观看| 韩国19禁主播vip福利视频| 91精品久久久久久久久久入口| 国内自拍欧美激情| 久久91亚洲精品中文字幕奶水| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲xxxx做受欧美| 狠狠躁夜夜躁人人爽天天天天97| 蜜臀久久99精品久久久无需会员| 久久久久久久成人| 国产视频亚洲精品| 国产伦精品一区二区三区精品视频| 日韩福利视频在线观看| 中文字幕精品av| 国产精品视频免费观看www| 92版电视剧仙鹤神针在线观看| 亚洲午夜久久久久久久| 久久精品国产综合| 亚洲欧洲一区二区三区在线观看| 久久亚洲精品一区| 久久久极品av| 欲色天天网综合久久| 538国产精品视频一区二区| 丝袜美腿亚洲一区二区| 欧美成人一区在线| 亚洲色图综合久久| 久久久亚洲网站| 成人精品一区二区三区电影黑人| 日韩av网站大全| 欧洲精品毛片网站| 国产精品久久久久久久久借妻| 色偷偷偷综合中文字幕;dd| 国产精品福利无圣光在线一区| 国产精品视频免费观看www| 69久久夜色精品国产69乱青草| 国产91精品久久久久久久| 欧美黑人xxxⅹ高潮交| 亚洲成人久久网| 北条麻妃一区二区三区中文字幕| 日韩一区二区福利| 日韩经典第一页| 97国产精品久久| 在线电影欧美日韩一区二区私密| 伊人一区二区三区久久精品| 亚洲a一级视频| 欧美精品免费在线观看| 亚洲free性xxxx护士hd| 欧美激情精品久久久久| 91国偷自产一区二区三区的观看方式| 中文字幕国产日韩| 亚洲成人黄色在线观看| 91精品国产91久久久久久不卡| 这里只有精品在线观看| 日韩一级黄色av| 欧美日韩精品在线视频| 亚洲欧美中文日韩在线| 久久久久久久久久久免费| 亚洲国产欧美精品| 日本亚洲精品在线观看| 日韩中文视频免费在线观看| 自拍偷拍免费精品| 国内免费久久久久久久久久久| 国产精品久久久av| 国产精品精品视频| 91精品国产91久久| 尤物九九久久国产精品的分类| 国产精品情侣自拍| 亚洲第一色中文字幕| 欧美激情精品久久久久久黑人| 亚洲人成网7777777国产| 精品露脸国产偷人在视频| 97视频在线免费观看| 国产精品亚洲美女av网站| 亚洲国产精品女人久久久| 久久中文字幕国产| 国产色综合天天综合网| 欧美综合国产精品久久丁香| 亚洲综合在线做性| 国产欧美在线视频| 一区二区三区在线播放欧美| 深夜福利一区二区| 亚洲成人精品久久久| 亚洲精品wwwww| 欧美日韩在线一区| 2020久久国产精品| www.亚洲人.com| 69av成年福利视频| 伊人久久久久久久久久| 国产欧美久久一区二区| 色悠悠久久久久| 国产欧美日韩最新| 久久综合伊人77777| 亚洲新声在线观看| 欧美影院在线播放| 97视频免费在线看| 精品视频在线导航| 国产不卡av在线免费观看| 美女扒开尿口让男人操亚洲视频网站| 日韩av一区在线观看| 久久99久久99精品免观看粉嫩| 亚洲欧美日本另类| 欧美日韩国产区| 伊是香蕉大人久久| 欧美激情在线狂野欧美精品| 亚洲最大av在线| 成人在线国产精品| 欧美日韩日本国产| 精品久久久久久电影| 1769国内精品视频在线播放| 亚洲毛片在线免费观看| 欧美性猛交xxxx黑人| 欧美激情视频在线| 91精品国产色综合久久不卡98| 亚洲www在线| 久热精品视频在线观看| 中文字幕日韩高清| 久久伊人91精品综合网站| 性欧美xxxx交| 九九九热精品免费视频观看网站| 亚洲夜晚福利在线观看| 91精品国产91久久久久久| 91中文字幕在线| 久久成人人人人精品欧| 国精产品一区一区三区有限在线|