首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.NET文本到语音音量

.NET文本到语音音量
EN

Stack Overflow用户
提问于 2011-06-23 01:33:18
回答 4查看 2.1K关注 0票数 2

我正在使用一个使用System.Speech.Synthesis引用的简单的文本到语音转换应用程序。我想在应用程序中添加一个滑块控件,并用它控制语音的音量。为了设置我正在使用的音量:

代码语言:javascript
运行
复制
speech.Volume = 100;

我是否需要使用某种事件处理程序来更新此值?顺便说一下,我使用C# (请不要使用VB.NET代码)将其创建为一个WPF应用程序。

EN

回答 4

Stack Overflow用户

发布于 2011-06-23 01:39:29

代码语言:javascript
运行
复制
<Slider Ticks="1, 2, 3, 4, 5, 6, 7, 8, 9, 10"
            Value="1"
            Delay="100"
            Interval="5"
            TickPlacement="BottomRight"
            Minimum="1"
            Maximum="10"
            Width="100"
            AutoToolTipPlacement="BottomRight"
            ValueChanged="slider_ValueChanged"
            Grid.Row="1"
            Grid.Column="0">
    Slider>

创建slider_ValueChanged的事件并设置Speech.volume = (int)sliderID.value;

票数 1
EN

Stack Overflow用户

发布于 2016-12-22 15:35:59

添加两个滑块,sliderVolume用于音量控制,sliderRate用于速率控制。然后在SpeakProgress事件中,为speech分配新的音量和速率,并使用characterPosition生成原始阅读内容的子串。然后使用这个新的子字符串重新启动speak。请参见以下代码。

代码语言:javascript
运行
复制
    string selectedSpeakData = "Sample Text Sample Text Sample Text Sample Text Sample Text";
    private SpeechSynthesizer speech;

    private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                speech= new SpeechSynthesizer();
                speech.SpeakProgress += new EventHandler<System.Speech.Synthesis.SpeakProgressEventArgs>(speech_SpeakProgress);
                speech.SpeakAsync(selectedSpeakData);
            }

    void speech_SpeakProgress(object sender, System.Speech.Synthesis.SpeakProgressEventArgs e)
            {
                if (speech.Volume != Convert.ToInt32(sliderVolume.Value) || speech.Rate != Convert.ToInt32(sliderRate.Value))
                {
                    speech.Volume = Convert.ToInt32(sliderVolume.Value);
                    speech.Rate = Convert.ToInt32(sliderRate.Value);
                    selectedSpeakData = selectedSpeakData.Remove(0, e.CharacterPosition);
                    speech.SpeakAsyncCancelAll();
                    speech.SpeakAsync(selectedSpeakData);
                }
            }
票数 1
EN

Stack Overflow用户

发布于 2011-06-23 01:40:56

每当Slider控件的值更改时,它都会引发事件ValueChanged。如果处理此事件,则可以通过检查Value属性从那里更新语音音量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6444081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档