john1990_1 Ответов: 1

Как освободить оперативную память от объекта speechsynthesizer?


У меня есть эта программа:

Преобразование Текста В Речь Для Windows[^]


Программа приказывает Windows произносить текст в буфере обмена, когда Ctrl+C нажимается дважды быстро.

Простой исходный код находится на моем сайте Google.

Каждый раз, когда он произносит новое предложение, он добавляет около 3 МБ оперативной памяти для программы, достигая на этот раз 521 МБ, как я могу освободить ресурсы (распорядиться ими) и забыть каждое произнесенное предложение, произнесенное предложение больше не нужно после того, как оно произнесено или остановлено на середине.

Это как будто он что-то запоминает и добавляет в оперативную память каждый раз, когда произносится предложение, а этого не должно быть, в прошлом, когда я использовал SPVoice, я думаю, что этого не было.

Что я уже пробовал:

public void speak1Text(string s)
        {

            s = prepareTextForSpeech(s);

            SS.SpeakAsyncCancelAll();
            SS = new SpeechSynthesizer();
            SS.SetOutputToDefaultAudioDevice();
            SS.SelectVoice(SS.GetInstalledVoices()[comboBoxVoice.SelectedIndex].VoiceInfo.Name);
            SS.Rate = trackBarRate.Value;
            SS.Volume = trackBarVolume.Value;

            SS.SpeakAsyncCancelAll();
            SS.SpeakAsync(s);
        }

1 Ответов

Рейтинг:
0

john1990_1

Я изменил его на SPvoice, и теперь он, кажется, работает хорошо, я попробую его в течение некоторого времени, я читал, что Microsoft знает об этой проблеме, но работает над более распространенными проблемами...