.NET Core 3.0中的Microsoft Speech [英] Microsoft Speech in .net core 3.0

查看:40
本文介绍了.NET Core 3.0中的Microsoft Speech的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我以前在 .net框架中使用过Microsoft Speech(不确定它是哪个版本),但它确实起作用了.我的PC上现在没有该项目.我已经下载并安装了 Runtime 11 SDK 11 并引用了 .dll我的 .net core 3.0 项目中的来自 C:\ Program Files \ Microsoft SDKs \ Speech \ v11.0 \ Assembly \ Microsoft.Speech.dll .这是我现在在ViewModel中所拥有的内容:

I've used Microsoft Speech previously (not sure which version it was) with .net framework and it did work. I don't have that project on my PC now. I've downloaded and installed the Runtime 11 and SDK 11 and referenced the .dll in my .net core 3.0 project from C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll. Here's what I've now in my ViewModel:

.
.
.
using Microsoft.Speech.Synthesis;

namespace Read
{
    public class VM : INotifyPropertyChanged
    {
        SpeechSynthesizer synth;
        string inputText;
        public string InputText { get => inputText; set { inputText = value; OnPropertyChanged(); } }

        public Command Speak { get; set; }
        public Command Pause { get; set; }
        public Command Resume { get; set; }
        public Command Stop { get; set; }

        public VM()
        {
            synth = new SpeechSynthesizer();
            synth.SetOutputToDefaultAudioDevice();
            synth.Volume = 75;
            Speak = new Command(speak, (o) => synth.State != SynthesizerState.Speaking);
            Pause = new Command(pause, (o) => synth.State == SynthesizerState.Speaking);
            Resume = new Command(resume, (o) => synth.State == SynthesizerState.Paused);
            Stop = new Command(stop, (o) => synth.State == SynthesizerState.Speaking || synth.State == SynthesizerState.Paused);
        }

        void speak(object obj) => synth.SpeakAsync(InputText);
        void pause(object obj) => synth.Pause();
        void resume(object obj) => synth.Resume();
        void stop(object obj) => synth.SpeakAsyncCancelAll();

        #region Notify Property Changed Members
    }

    public class Command : ICommand ...
}

在xaml中,我拥有这些:

and in xaml, I've these:

<Window ...>
    <Window.DataContext>
        <local:VM/>
    </Window.DataContext>
    <Grid Margin="5">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <TextBox Text="{Binding InputText}" AcceptsReturn="True" TextWrapping="Wrap"/>
        <StackPanel Grid.Column="1">
            <StackPanel.Resources>
                <Style TargetType="Button">
                    <Setter Property="Margin" Value="5 0 0 5"/>
                </Style>
            </StackPanel.Resources>
            <Button Content="Speak" Command="{Binding Speak}"/>
            <Button Content="Pause" Command="{Binding Pause}"/>
            <Button Content="Resume" Command="{Binding Resume}"/>
            <Button Content="Stop" Command="{Binding Stop}"/>
        </StackPanel>
    </Grid>
</Window>

我认为这就是我以前的Text2Speech中的全部内容.现在,所有这些都在我的.net核心项目中不起作用!

I think that's all I'd in my previous Text2Speech. Now with all these, in my .net core project, it isn't working!

推荐答案

Microsoft Speech Platform SDK 11与.NET Core不兼容.

Microsoft Speech Platform SDK 11 is not compatible with .NET Core.

Microsoft.CognitiveServices.Speech 是新的.NET Standard兼容API.可用于.NET Core.

Microsoft.CognitiveServices.Speech is the new .NET Standard compliant API that is available for .NET Core.

您会发现此处.

You'll find a quickstart on GitHub. The official docs is here.

这篇关于.NET Core 3.0中的Microsoft Speech的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆