WebView2なら音声読み上げを入れることができる.SAPIの代わりに使いたい場合には動的にJavaScriptを実行するようにならないといけないな。と思って修正.
SAPIの代わりに使う場合には,WebView2.CoreWebView2.ExecuteScriptAsyncを使えばよい.
例えとして下にサンプルを示す.
ただし,この例では毎回var synthes = new SpeechSynthesisUtterance()とやっているので注意して.オーバーヘッドが大きい.
もともとWindows 10の場合にはすでにSAPIがあるので読み上げ機能を使うだけでやるのは意味はない.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
string path = Directory.GetCurrentDirectory();
path = path + @"\\index.html";
this.webView21.Source = new Uri(path);
}
private async void button1_Click(object sender, EventArgs e)
{
string text =
"var synthes = new SpeechSynthesisUtterance('こんにちは');" +
"speechSynthesis.speak(synthes);";
await this.webView21.CoreWebView2.ExecuteScriptAsync(text);
}
}
}
WebView2.CoreWebView2.ExecuteScriptAsyncがつかえるのはページを読み終わって表示し終わってからだと思う.その前に実行すると例外が発生すると思う.
SAPIだけでやる場合には以下のように行うのです.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
SpeechLib.SpVoice sp = new SpeechLib.SpVoice();
sp.Speak("アレクサ。今なんじ");
}
}
}