環境
Windows 11 Pro (64bit)
Visual Studio Community 2022
参考
Visual Studio 2022
C# コンソールアプリ
プロジェクト名:ConsoleApp1
フレームワーク:.NET 8.0
☑最上位レベルのステートメントを使用しない
プロジェクト→プロジェクトファイルの編集
変更前:<TargetFramework>net8.0</TargetFramework>
変更後:<TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
using Windows.Media.Core;
using Windows.Media.Playback;
using Windows.Media.SpeechSynthesis;
namespace ConsoleApp1
{
internal class Program
{
static async Task Main(string[] args)
{
var text = "こんにちは、世界";
var synth = new SpeechSynthesizer();
var stream = await synth.SynthesizeTextToStreamAsync(text);
var player = new MediaPlayer();
player.Source = MediaSource.CreateFromStream(
stream, stream.ContentType);
var tcs = new TaskCompletionSource<int>();
player.MediaEnded += (sender, e) => tcs.SetResult(0);
player.Play();
await tcs.Task;
}
}
}
dotnetコマンド
適当なプロジェクト名のディレクトリを用意する。
例:C:\Projects\.NET\SpHello
@echo off
prompt $e[33m$p$g$e[m
cmd
dotnet new console
というコマンドで(プロジェクト名).csproj
とProgram.cs
ファイルが作られる。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
using Windows.Media.Core;
using Windows.Media.Playback;
using Windows.Media.SpeechSynthesis;
namespace ConsoleApp1
{
internal class Program
{
static async Task Main(string[] args)
{
var text = "こんにちは、世界";
var synth = new SpeechSynthesizer();
var stream = await synth.SynthesizeTextToStreamAsync(text);
var player = new MediaPlayer();
player.Source = MediaSource.CreateFromStream(
stream, stream.ContentType);
var tcs = new TaskCompletionSource<int>();
player.MediaEnded += (sender, e) => tcs.SetResult(0);
player.Play();
await tcs.Task;
}
}
}
dotnet build
というコマンドで"bin\Debug\net6.0-windows10.0.22000.0\SpHello.exe
が作られる。
Visual Studio 2022 (.NET Framework)
C# コンソールアプリ (.NET Framework)
プロジェクト名:ConsoleApp2
フレームワーク:.NET Framework 4.7.2
[ツール]->[NuGetパッケージマネージャー]->[パッケージマネージャー設定]
既定のパッケージ管理形式:PackageReference
[プロジェクト]->[NuGetパッケージの管理]
[参照]タブでMicrosoft.Windows.SDK.Contracts
を検索してインストール。
例:最新の安定板 10.0.22621.3233
using System;
using System.Threading.Tasks;
using Windows.Media.Core;
using Windows.Media.Playback;
using Windows.Media.SpeechSynthesis;
namespace ConsoleApp2
{
internal class Program
{
static async Task Main(string[] args)
{
var text = "こんにちは、世界";
var synth = new SpeechSynthesizer();
var stream = await synth.SynthesizeTextToStreamAsync(text);
var player = new MediaPlayer();
player.Source = MediaSource.CreateFromStream(
stream, stream.ContentType);
var tcs = new TaskCompletionSource<int>();
player.MediaEnded += (sender, e) => tcs.SetResult(0);
player.Play();
await tcs.Task;
}
}
}