Nahrávání hlasu   zodpovězená otázka

VB.NET

Existuje nějaký způsob, jak nahrávat z mikrofonu hlas a ten se pak po zmáčknutí Buttonu uloží třeba do .wav formátu?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Existuje na to API funkce.

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer

Vytvořte si tlačítko record a dejte tam tento kód:

mciSendString("open new Type waveaudio Alias recsound", "", 0, 0)
mciSendString("record recsound", "", 0, 0)

Pro uložení nahrávky:

mciSendString("save recsound c:\\nahravka.wav", "", 0, 0)
mciSendString("close recsound ", "", 0, 0)

Doufám, že to takto stačí :)

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

Ještě by mi pomohlo uložení, kam uživatel chce, kód

mciSendString("save recsound " + SaveFileDialog1.FileName, "", 0, 0)

jaksi neukládá :)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Je to zvláštní na C: a do složek mi to šlo, ale třeba na plochu ne. Možná by to šlo řešit, že by se to uložilo normálně na céčko a soubor sepřekopíroval tam, kam uživatel určil pomocí savefiledialogu. Napsal jsem přibližný kód, možná někdo vymyslí elegantnější způsob.

        With SaveFileDialog1
            .Title = "save file"
            .InitialDirectory = "C:"
            .Filter = "*.wav|*.wav"
        End With

        If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            mciSendString("save recsound c:\\nahravka.wav", "", 0, 0)
            mciSendString("close recsound ", "", 0, 0)
            IO.File.Copy("c:\\nahravka.wav", SaveFileDialog1.FileName)
            IO.File.Delete("c:\\nahravka.wav")
        End If

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Podobný problém má i tento uživatel, v reakcích je uvedené možné funkční řešení, ovšem další reakce tazatele už se neobjevila, není tedy jasné, zda řešení pomohlo. Nicméně, můžete to vyzkoušet.

http://stackoverflow.com/questions/11480...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Při převodu do VB tento postup nefunguje.

If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                Directory.SetCurrentDirectory(SaveFileDialog1.InitialDirectory)
                mciSendString("save recsound Test.wav", Nothing, 0, IntPtr.Zero)
                mciSendString("close recsound ", Nothing, 0, IntPtr.Zero)
            End If

Funguje však předchozí způsob.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ciao. Myslíš, že by jsi mi mohl popsat jak to funguje? Dík moc

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Nepoužívejte MCI. To je API z Windows 3.1, které bylo nahrazeno DirectX.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback