Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/23: Рейтинг темы: голосов - 23, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
1

TTS (Прочитанный текст записать в аудио файл)

19.04.2011, 23:03. Показов 4746. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите плииииззззз. Никак не могу заставить свою прогу записывать текст, который она читает с помощью tts, в аудио файл. Работаю в Visual Studio 2008.( vb.net)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2011, 23:03
Ответы с готовыми решениями:

Записать в файл текст из TextBox
привет ребят, помогите простенькую программку написать, есть форма есть один текстбох и есть одна...

Объединить построчно текст из трех RTB и записать в файл
Всем доброго здоровичка!!! Такая проблемка: На форме 3 RTB. Необходимо в файл записать из этих РТБ...

[FFmpeg] Как записать в файл только что прочитанный AVPacket?
Добрый день! Как сделать, чтобы пакеты записывались в новый контейнер без перекодирования видео?...

Записать звук в аудио-файл
Я хочу озвучить текст через переводчик, и записать его в аудио-файл. Первое понятно как сделать а...

25
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
19.04.2011, 23:07 2
hot_chik, а как ты пытаешься ее заставить записывать текст, полученный с помощью tts?
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
19.04.2011, 23:15  [ТС] 3
Чесно говоря, пока ничего есчё не получилось. моя программа читает текст написанный в текстбоксе.
Мне нужно чтобы это записывалось в аудио файл. я пыталась это сделать с помощью этого кода

Try

Dim sfd As New SaveFileDialog
sfd.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav"
sfd.Title = "Save to a wave file"
sfd.FilterIndex = 2
sfd.RestoreDirectory = True
Catch

MessageBox.Show("There is some error in converting to Wav file.")

End Try


Но увы нифига не получаеться.....
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
19.04.2011, 23:18 4
А tts-движок какой применяешь - Microsoft Anna?
Вообще что ты используешь для tts? - System.Speech или SAPI?
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
19.04.2011, 23:25  [ТС] 5
Да именно этот, пыталась другие загрузить, но и эта попытка была безуспешной...

Добавлено через 3 минуты
Цитата Сообщение от Eugene22 Посмотреть сообщение
А tts-движок какой применяешь - Microsoft Anna?
Вообще что ты используешь для tts? - System.Speech или SAPI?

Использую System.Speech

Добавлено через 47 секунд
Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
vox.Rate = RateOfSpeech
vox.Speak(RichTextBox1.Text.ToString(), SpeechVoiceSpeakFlags.SVSFlagsAsync)
End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
vox.Voice = vox.GetVoices().Item(ComboBox1.SelectedIndex)
End Sub

Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
RateOfSpeech = TrackBar1.Value
End Sub

Private Sub ToolStripButton6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton6.Click
vox.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak)
End Sub

Добавлено через 17 секунд
Вот мой код
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
19.04.2011, 23:30 6
При создании объекта SpeechSynthesizer указываешь
VB.NET
1
vox.SetOutputToWaveFile("полное имя файла.wav)"
А вообще можно через инет посылать текст на сайт Микрософта или Гугла и получать от них записанные звуковые файлы, а затем их и проигрывать, причем для разных языков, в том числе для русского
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
19.04.2011, 23:42  [ТС] 7
можеш пожалуста рассказать как для блондинки...... блииииин. стыдно..... не поняла.......
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
19.04.2011, 23:44 8
Что именно не понятно?
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
19.04.2011, 23:46  [ТС] 9
Я не могу создать этот объект SpeechSynthesizer. Программа не расспознает его......
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
19.04.2011, 23:49 10
ну так vox - это и есть SpeechSynthesizer

вообщем смотрим вот это пример. Там все есть.
2
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
19.04.2011, 23:53  [ТС] 11
вот что мне выдает.... смотри скин...
Миниатюры
TTS (Прочитанный текст записать в аудио файл)  
0
557 / 434 / 21
Регистрация: 16.12.2010
Сообщений: 953
20.04.2011, 00:12 12
Как Вы объявляете vox ?

Добавлено через 3 минуты
VB.NET
1
Dim vox As New SpeechSynthesizer()
так?
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
20.04.2011, 00:17  [ТС] 13
VB.NET
1
Public WithEvents vox As New SpVoice
вот так

Добавлено через 48 секунд
я объявляю его в модуле
0
557 / 434 / 21
Регистрация: 16.12.2010
Сообщений: 953
20.04.2011, 00:25 14
Попробуйте его объявить как я показывал.
Ps. Зачем в модуль то пихать?

Добавлено через 1 минуту
И НЕ забудьте
VB.NET
1
2
Imports System.Speech
Imports System.Speech.Synthesis
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
20.04.2011, 00:26  [ТС] 15
нужно минимизировать код в форме.

Добавлено через 1 минуту
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
' Load the voices combo box
        Dim Token As ISpeechObjectToken
        For Each Token In vox.GetVoices
            ComboBox1.Items.Add(Token.GetDescription())
        Next
        ComboBox1.SelectedIndex = 0
 
        Dim str As String = Environment.UserName.ToString()
 
 Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
        vox.Rate = RateOfSpeech
        vox.Speak(RichTextBox1.Text.ToString(), SpeechVoiceSpeakFlags.SVSFlagsAsync)
    End Sub
 
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        vox.Voice = vox.GetVoices().Item(ComboBox1.SelectedIndex)
    End Sub
 
    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        RateOfSpeech = TrackBar1.Value
    End Sub
 
    Private Sub ToolStripButton6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton6.Click
        vox.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak)
    End Sub
   
 
    Private Sub LerFiceiroToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LerFiceiroToolStripMenuItem.Click
        Panel1.Show()
        Panel2.Hide()
        Panel3.Hide()
        Panel4.Hide()
    End Sub
 
    Private Sub SairToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SairToolStripMenuItem.Click
        result = MsgBox("Fechar a Aplicação?", MsgBoxStyle.Question + MsgBoxStyle.YesNo)
 
        If result = MsgBoxResult.Yes Then
            MsgBox("Adeus!", MsgBoxStyle.Information)
            Application.Exit()
 
        ElseIf result = MsgBoxResult.No Then
            cancel = True
        End If
    End Sub
 
    Private Sub InfoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InfoToolStripMenuItem.Click
        Panel1.Hide()
        Panel2.Hide()
        Panel3.Show()
        Panel4.Hide()
    End Sub
 
  
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Panel4.Show()
        Panel1.Hide()
        Panel2.Hide()
        Panel3.Hide()
 
        sSQL = "select * FROM Livros"
        da = New OleDb.OleDbDataAdapter(sSQL, conn)
 
        ds = New DataSet
        da.Fill(ds, "Livros")
        Me.DataGridView1.DataSource = ds.Tables("Livros")
 
    End Sub
 
    Private Sub DataGridView1_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
        conn.Open()
        da.Update(ds, "Livros")
        Me.DataGridView1.DataSource = ds.Tables("Livros")
        conn.Close()
    End Sub
 
    Private Sub ToolStripButton14_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton14.Click
        vox.Rate = RateOfSpeech
        vox.Speak(RichTextBox1.Text.ToString(), SpeechVoiceSpeakFlags.SVSFlagsAsync)
        vox.SetOutputToWaveFile("livro.wav")
    End Sub
0
557 / 434 / 21
Регистрация: 16.12.2010
Сообщений: 953
20.04.2011, 00:27 16
VB.NET
1
Public vox As New  SpeechSynthesizer()
В модуле так объявите

Не гарантирую что пройдет, но вы попробуйте в камнем случае в форме в самой где нужно объявите второй раз, мне сейчас трудно сказать, нет студии под рукой, весь код смотрю через телефон
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
20.04.2011, 00:28  [ТС] 17
это код который относится к этой теме в моей проге. если задекларирую так как вы предлогаете, очень много что не фурычит, так как использует SpVoice
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
20.04.2011, 00:31  [ТС] 18
декларирую так как вы предлогаете и выдает вот эти ошибки см. скин
Миниатюры
TTS (Прочитанный текст записать в аудио файл)  
0
557 / 434 / 21
Регистрация: 16.12.2010
Сообщений: 953
20.04.2011, 00:37 19
Тогда в самой форме объявите второй раз (можно под другим именем)

Добавлено через 5 минут
Вот код для синтеза речи
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports System.Speech
Imports System.Speech.Synthesis
Imports System.IO
 
Namespace SoundsVB
    Public Class speakerForm
        Dim speaker As New SpeechSynthesizer()
 
        Private Sub exitButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles exitButton.Click
            Application.Exit()
 
        End Sub
 
        Private Sub speakButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles speakButton.Click
            speaker.Rate = Convert.ToInt32(speedUpDown.Value)
            speaker.Volume = Convert.ToInt32(volumeUpDown.Value)
            speaker.SpeakAsync(speakTextBox.Text)
 
        End Sub
 
        Private Sub fileButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles fileButton.Click
            SaveFileDialog1.FileName = fileTextBox.Text
            If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                fileTextBox.Text = SaveFileDialog1.FileName
            End If
        End Sub
 
        Private Sub exportButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles exportButton.Click
            If fileTextBox.Text = String.Empty Then
                MessageBox.Show("Please select a location to save the file.", "File not defined", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Else
                Try
                    speaker.Rate = Convert.ToInt32(speedUpDown.Value)
                    speaker.Volume = Convert.ToInt32(volumeUpDown.Value)
                    speaker.SetOutputToWaveFile(fileTextBox.Text)
                    speaker.Speak(speakTextBox.Text)
                    speaker.SetOutputToDefaultAudioDevice()
                    MessageBox.Show("File written successfully.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Catch ex As Exception
                    MessageBox.Show("There was an error writing the file." & vbNewLine & ex.Message, "File error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try
            End If
        End Sub
    End Class
 
End Namespace
1
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 15
20.04.2011, 01:13  [ТС] 20
пришлось немного его подмонтировать, файл теперь сохраняет, вот только не аудио а непонятно что, и текст написанный в текстбоксе сохраняеться как титл....

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Imports SpeechLib
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports System.Speech
Imports System.Speech.Synthesis
Imports System.IO
 
 
 
Public Class Form1
    Dim speaker As New SpeechSynthesizer
 
 Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        If RichTextBox1.Text = String.Empty Then
            MessageBox.Show("Please select a location to save the file.", "File not defined", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            Try
                
                speaker.SetOutputToWaveFile(RichTextBox1.Text)
                speaker.Speak(RichTextBox1.Text)
                speaker.SetOutputToDefaultAudioDevice()
                MessageBox.Show("File written successfully.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch ex As Exception
                MessageBox.Show("There was an error writing the file." & vbNewLine & ex.Message, "File error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End If
    End Sub
0
20.04.2011, 01:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2011, 01:13
Помогаю со студенческими работами здесь

Как записать аудио поток в файл
Добрый день!!! Подскажите как сохранить в файл аудио поток с микрофона? Делал как-то так (см. ниже...

Записать аудио и сохранить в файл при помощи mciSendString()
Подскажите пожалуйста как правильно это записывать (хочу сохранить в аудиофайл) void __fastcall...

Помогите с помощью php записать аудио файл в mysql...
Пишу сайт, на котором зарегестрированный пользовать будет иметь возможность добавлять свою музыку,...

Прочитать текст из файла, затем удалить из текста все буквы вашего имени и записать текст в новый файл
Создать Windows – приложение, в котором производите запись считывание текста из файла, затем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru