Microsoft Speech в .NET Core 3.0

Раньше я использовал Microsoft Speech (не уверен, какая это была версия) с .net framework, и это сработало. У меня сейчас нет этого проекта на моем компьютере. Я загрузил и установил Runtime 11 и SDK 11 и ссылался на .dll в моем .net core 3.0 проекте с C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll. Вот что у меня сейчас в 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 у меня есть:

<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 это не работает!


person Community    schedule 03.12.2019    source источник
comment
[Только для Windows] System.Speech теперь доступен для .NET Standard 2.0 и более поздних версий через официальный пакет nuget nuget.org/packages/System.Speech/5.0.0, а также пакет совместимости nuget.org/packages/Microsoft.Windows.Compatibility.   -  person vulcan raven    schedule 15.04.2021


Ответы (1)


Microsoft Speech Platform SDK 11 несовместима с .NET Core.

Microsoft.CognitiveServices.Speech - это новый API, совместимый со стандартом .NET, доступный для .NET Core.

Вы найдете быстрый старт на GitHub. Официальные документы находятся здесь.

person mm8    schedule 03.12.2019
comment
похоже, что необходимо быть в сети и иметь лазурный кондиционер, чтобы им пользоваться! Тот же код сейчас не работает с .net framework! Он действительно работает с framework, если я использую вместо этого System.Speech.Synthesis! - person ; 03.12.2019