がりらぼ

WindowsRuntimeの応援ブログ

Windows10 Build10074に新しい日本語合成音声が2つ出来て、将来の日本語Cortanaさんの声候補かもしれない件

新しい合成音声

Windows10のInsider Preview、かなりさくさく動くのでBootcampに入れて遊んでたら、設定の音声合成に見たことない名前の音声合成が加わっていました。

f:id:garicchi:20150508162252p:plain

加わったのは以下の2つ

今まで日本語音声合成は「Haruka」という合成音声が担っていました。

しかし今回、Harukaはなくなり*1、新たにAyumiちゃん*2とIchiroくんが加わりました。

Ayumiの声はこんな感じ

Ichiroはこんな感じ

今までと何が違うんだ?って感じの方が結構いると思うのでHarukaの声はこんな感じです。

若干劣化した?Ayumiちゃんの声高い声でサイコーっす。

まあでも、新しく音声合成が加わったということは、Cortanaさんの声がこれになる可能性が大いにあるということですね。*3

Windows10では音声アシスタントも売りの一つとするっぽいので頑張ってほしいところです。

おまけ

SpeechSynsesizer API使えました。

好きな声を喋らせることができます。Windows10 Build10074入れてる人は是非VS2015入れてアプリ作ってみてね!

XAML

<Page
    x:Class="SampleSynthesizer.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:SampleSynthesizer"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Button x:Name="button_speech" Content="話す" HorizontalAlignment="Left" Margin="511,327,0,0" VerticalAlignment="Top" Height="29" Width="63" Click="button_speech_Click"/>
        <TextBox x:Name="textBox" HorizontalAlignment="Left" Margin="131,165,0,0" TextWrapping="Wrap" Text="こんにちは、私はWindows10 の新しい日本語音声合成です。どうぞよろしく" VerticalAlignment="Top" Width="342" AcceptsReturn="True" Height="184"/>
        <ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="232,97,0,0" VerticalAlignment="Top" Width="203"/>
        <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="131,98,0,0" TextWrapping="Wrap" Text="音声を選択" VerticalAlignment="Top"/>

    </Grid>
</Page>

C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Media.SpeechRecognition;
using Windows.Media.SpeechSynthesis;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

namespace SampleSynthesizer
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        MediaElement _mediaElement;

        public MainPage()
        {
            this.InitializeComponent();

            _mediaElement = new MediaElement();

            comboBox.ItemsSource = SpeechSynthesizer.AllVoices.Where(q => q.Language == "ja-JP").Select(q => q.DisplayName).ToList();
            
        }

        private async void button_speech_Click(object sender, RoutedEventArgs e)
        {
            
            var synthesizer = new SpeechSynthesizer();
            synthesizer.Voice = SpeechSynthesizer.AllVoices.ElementAt(comboBox.SelectedIndex);

            var stream = await synthesizer.SynthesizeTextToStreamAsync(textBox.Text);

            _mediaElement.SetSource(stream, stream.ContentType);

        }

        
    }
}

*1:Harukaちゃんェ...

*2:擬人化はよ

*3:Cotranaが日本に来ればの話