Что нового

Изменение частоты звука на ноутбуке

Arei

Скриптер
Сообщения
938
Репутация
115
Здравствуйте, форумчане, столкнулся с такой проблемой,что при записи Wav дорожек всё время записывается с одной частотой 11.025 KHz и 8 bits.Подскажите как избавиться, от этой неожиданно подвернувшейся проблемы.

P/s Windows 7 x64
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
В настройках сменить частоту. Использовать софт который позволит это сделать.
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
В настройках нет нужной мне частоты.Посоветуйте программу, т.к не находил нужный.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Arei
Audacity
FairStars Recorder
Easy CD-DA Extractor
Sound Forge
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
при записи всё так же и записывается
Bit rate : 88.2 Kbps
Channel(s) : 1 channel
Sampling rate : 11.025 KHz
Bit depth : 8 bits
код записывания такой
Код:
;start recording
mciSendString("close all")
mciSendString("open new type waveaudio alias capture")
mciSendString("set capture bitspersample 16") ; 8, etc.
mciSendString("set capture samplespersec 22050") ; 44100, etc...
mciSendString("set capture channels 1") ; or 2
mciSendString("record capture")

; keep recording for 5 seconds
Sleep(5000)
$File=FileSaveDialog("","","Wave files (*.wav)")&".wav"
; stop and save recording to $filename
mciSendString("stop capture")
mciSendString('save capture "' & $File & '" wait')
mciSendString("close capture")

;===============================================================================
; Description:     Send Windows Media Control Interface (MCI) string
; Parameter(s):    MCI command string. See command reference at:
;                  http://msdn.microsoft.com/en-us/library/ms710815(VS.85).aspx
; Requirement(s):  None
; Return Value(s): on success = 1, on fail = 0 and @error set to 1
;===============================================================================
Func mciSendString($s)
    DllCall("winmm.dll", "int", "mciSendString", "str", $s, "str", "", "int", 65534, "hwnd", 0)
    If @error Then
        SetError(1)
        Return 0
    Else
        Return 1
    EndIf
EndFunc
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Проверяй ошибки функции. Если все OK, то возвращает 0, в противном случае не 0.

Код:
Func mciSendString($s)
    Local $Ret = DllCall("winmm.dll", "int", "mciSendString", "str", $s, "str", "", "int", 65534, "hwnd", 0)
	ConsoleWrite($Ret[0] & ' - ' & $s & @CR)
    If (Not IsArray($Ret)) Or ($Ret[0]) Then
		Return 0
    Else
		Return 1
    EndIf
EndFunc
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Дело в том,что наверное в ноуте стоит микрофон,который не может записывать звуки с такой частотой.Подрубил web камеру, всё работает отлично.НО хотел бы с встроенным микрофоном так сделать.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Используй эту функцию.

Код:
Func mciSendString($sCommand)

	Local $Err, $Ret

	$Err = DllCall("winmm.dll", "dword", "mciSendStringW", "wstr", $sCommand, "ptr", 0, "uint", 0, "ptr", 0)
	If @error Then
		Return SetError(1, 0, 0)
	Else
		If $Err[0] Then
			$Ret = DllCall("winmm.dll", "bool", "mciGetErrorStringW", "dword", $Err[0], "wstr", "", "uint", 4096)
			If (Not @error) And ($Ret[0]) Then
				ConsoleWrite(StringFormat('%-40s - %s', $sCommand, $Ret[2]) & @CR)
			EndIf
			Return SetError(1, $Err[0], 0)
		EndIf
	EndIf
	Return 1
EndFunc   ;==>mciSendString


Для встроенного микрофона замени 16 на 8.
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
мне дело в том,что и надо в таком диапазоне
Код:
mciSendString("set capture bitspersample 16") 
mciSendString("set capture samplespersec 22050")
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Arei
в ноуте стоит микрофон,который не может записывать звуки
Микрофон сам по себе выдаёт аналоговый сигнал, оцифровывает его звуковая карта. Частота дискретизации задаётся "окно настроек > драйвер > звуковая плата"
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
вот это "окно настроек > драйвер > звуковая плата" где находится,просто первый раз слышу, можно по подробнее, и можно ли выставить на микрофоне не стерео, а моно, т.е не два канала, а один.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Arei
Панель управления > Звуки и аудиоутройства > Дополнительно > Качество записи. Всё зависит от компьютера, какая там звуковая карта. На некторых можно выставить конкретные частоты, например M-Audio можно выставить 196 000. Точно не уверен, но если на CD-диска используется частота 44100, то я считал всегда, что компьютер по умолчанию в этой частоте и будет записывать. Кроме того можно конвертировать в любой формат. Или нужно изначально качество? Просто для голоса 22000 это нормально, многие и 11000 не заметят разницы. Потеря высоких частот.

и можно ли выставить на микрофоне не стерео, а моно, т.е не два канала, а один.
Смотреть над, как я угадаю. Оно так и есть моно, просто будет в оба канала писать один канал. Ну для таких как скайп оно же не будет для одного уха передавать, а программы которые записывают просто запишут один канал.
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Спасибо, но что вы писали наверное для windows XP, а как я писал выше у меня windows 7/ Но суть я понял, спасибо.
 
Верх