엑셀 마이크 입력값 사용가능한가요?

VBA
작성자
양송이
작성일
2021-10-05 15:58
조회
51
엑셀버전 : M365

운영체제 : 윈도우10

가능한지는 모르겠지만

웹캠 마이크로 입력된 소리의 데시벨을 데이터로 받아와서

일정 데시벨 이상이 되면 경고음이 울리게 만들고 싶은데 이런것도 엑셀에서 가능할까요?

전체 4

  • 2021-10-05 16:55
    채택된 답변

    VBA는 모르겠지만 C나 파이썬쓰면 쉽게 가능합니다. (물론 코딩을 모르실 경우 공부가 필요하겠지만요..)

    c# - Read microphone decibels and pitch/frequency - Stack Overflow

    public float rmsVal;
    public float dbVal;
    public float pitchVal;
    
    private const int QSamples = 1024;
    private const float RefValue = 0.1f;
    private const float Threshold = 0.02f;
    
    float[] _samples;
    private float[] _spectrum;
    private float _fSample;
    
    void Start()
    {
        _samples = new float[QSamples];
        _spectrum = new float[QSamples];
        _fSample = AudioSettings.outputSampleRate;
    }
    
    void Update()
    {
        AnalyzeSound();
    
        Debug.Log("RMS: " + rmsVal.ToString("F2"));
        Debug.Log(dbVal.ToString("F1") + " dB");
        Debug.Log(pitchVal.ToString("F0") + " Hz");
    }
    
    void AnalyzeSound()
    {
        GetComponent().GetOutputData(_samples, 0); // fill array with samples
        int i;
        float sum = 0;
        for (i = 0; i < QSamples; i++)
        {
            sum += _samples[i] * _samples[i]; // sum squared samples
        }
        rmsVal = Mathf.Sqrt(sum / QSamples); // rms = square root of average
        dbVal = 20 * Mathf.Log10(rmsVal / RefValue); // calculate dB
        if (dbVal < -160) dbVal = -160; // clamp it to -160dB min
                                        // get sound spectrum
        GetComponent().GetSpectrumData(_spectrum, 0, FFTWindow.BlackmanHarris);
        float maxV = 0;
        var maxN = 0;
        for (i = 0; i < QSamples; i++)
        { // find max 
            if (!(_spectrum[i] > maxV) || !(_spectrum[i] > Threshold))
                continue;
    
            maxV = _spectrum[i];
            maxN = i; // maxN is the index of max
        }
        float freqN = maxN; // pass the index to a float variable
        if (maxN > 0 && maxN < QSamples - 1)
        { // interpolate index using neighbours
            var dL = _spectrum[maxN - 1] / _spectrum[maxN];
            var dR = _spectrum[maxN + 1] / _spectrum[maxN];
            freqN += 0.5f * (dR * dR - dL * dL);
        }
        pitchVal = freqN * (_fSample / 2) / QSamples; // convert index to frequency
    }

     

     


    • 2021-10-05 16:58

      감사합니다!! 그럼 c언어나 파이썬은 엑셀에서는 사용하지 못하는 거지요? 현재 만든 엑셀 프로그램에 기능을 추가하고 싶은거라 엑셀에서 실행이 되어야 해서요. ㅠㅠ


      • 2021-10-05 17:23

        VBA로 끼얹어야하는데, 파이썬 간단한 코드는 엑셀에서 실행할 수 있습니다.

        공유하는 파일이 아니라면 .py 파일 형태로 읽어와서 실행할 수 있어요.

        유튜브에 검색하시면 많이 있을겁니다. 구현 레벨에 따라 달리지겠지만요


  • 2021-10-06 00:55
    Public Declare PtrSafe Function KernelBeep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
    
    Sub SpeakDataTest()
        Dim iSoundValue As Long
        Dim iFrequecy As Long
        Dim iDuration As Long
        Dim cVoiceWord As String
        
        
        iDuration = 100 '// 0.1 sec
        cVoiceWord = "ok"
        
        For iFrequecy = 600 To 700 Step 25
        
           iSoundValue = Application.RandBetween(1, 10000)
           Call SpeakData(iSoundValue, iFrequecy, iDuration, cVoiceWord)
            
        Next
    
    
    End Sub
    
    Sub SpeakData(iSoundValue As Long, iFrequecy As Long, iDuration As Long, Optional cVoiceWord As String = "na")
        Select Case iSoundValue
        
            Case Is < 1000
                KernelBeep 4000, iDuration    ' frequency, duration
                If cVoiceWord <> "na" Then Application.Speech.Speak cVoiceWord, True
            
            Case Is < 3000
                KernelBeep iFrequecy, iDuration '// KernelBeep 600, 100 은 표준 beep
                KernelBeep iFrequecy, iDuration
                KernelBeep iFrequecy, iDuration
                
            Case Is >= 3000
                If cVoiceWord <> "na" Then Application.Speech.Speak cVoiceWord, True
                KernelBeep iFrequecy, iDuration
        End Select
    
    End Sub

     

    모듈에 위 소스를 복사후 실행해 보세요.
    영감을 얻으실 것 입니다.


전체 4,205
번호 카테고리 제목 작성자 작성일 추천 조회
4189 VBA
New vba listbox 에 head 추가하는 방법
서민철 | 2021.10.17 | 추천 0 | 조회 11
서민철 2021.10.17 0 11
4188 함수/공식
New 다품목 안전 재고 관리시 사용할 수 있는 함수 문의
엑셀왕왕초보 | 2021.10.17 | 추천 0 | 조회 13
엑셀왕왕초보 2021.10.17 0 13
4187 함수/공식
New importrange로 불러온 그림이 인쇄가 안됩니다..ㅠㅠ
민 쌤 | 2021.10.17 | 추천 0 | 조회 16
민 쌤 2021.10.17 0 16
4186 함수/공식
New 꼭 도와 주세요. 첨부파일 (2)
그린의달인 | 2021.10.16 | 추천 0 | 조회 34
그린의달인 2021.10.16 0 34
4185 함수/공식
New 공백 유지하는 중복 제거 문의 첨부파일 (4) 답변완료
clairebear8 | 2021.10.16 | 추천 0 | 조회 33
clairebear8 2021.10.16 0 33
4184 함수/공식
New 엑셀 공식 도와주세요~ 첨부파일 (1)
ma**** | 2021.10.16 | 추천 0 | 조회 46
ma**** 2021.10.16 0 46
4183
New 제가 만든 엑셀VBA가 오류들이 있어 도움을 청합니다. 첨부파일 (1)
유림아빠 | 2021.10.16 | 추천 0 | 조회 26
유림아빠 2021.10.16 0 26
4182 차트/그래프
New 이런 챠트도 가능한지요 (1)
| 2021.10.16 | 추천 0 | 조회 45
2021.10.16 0 45
4181 함수/공식
New 중복값 제거 및 특정조건을 만족하는 값만 표시 첨부파일 (4)
리부트짱가 | 2021.10.16 | 추천 0 | 조회 42
리부트짱가 2021.10.16 0 42
4180 VBA
New pdf파일저장 + 드롭다운 매크로 VBA 문의드립니다. 첨부파일 (1)
호두마루 | 2021.10.16 | 추천 1 | 조회 25
호두마루 2021.10.16 1 25
4179 기능/도구
New 다중조건을 다수의 셀에 입력하는 방법 (1)
seeking | 2021.10.15 | 추천 0 | 조회 34
seeking 2021.10.15 0 34
4178 함수/공식
New 같은 값끼리 같은 색을 적용하고 싶습니다 첨부파일 (6)
유령회원 | 2021.10.15 | 추천 0 | 조회 33
유령회원 2021.10.15 0 33
4177 VBA
New VBA로 날짜 입력하는데 형식이 날짜형실으로 바꿀수있을까요? (1)
박종만 | 2021.10.15 | 추천 0 | 조회 29
박종만 2021.10.15 0 29
4176 VBA
New VBA에서 엑셀파일 여는 버튼을 만들었습니다. 첨부파일 (2) 답변완료
늘푸른2 | 2021.10.15 | 추천 0 | 조회 37
늘푸른2 2021.10.15 0 37
4175 VBA
New 살려주세욤.. 다중조건+중복제거 데이터유효성검사.. 첨부파일
지져스 | 2021.10.15 | 추천 0 | 조회 42
지져스 2021.10.15 0 42
4174 차트/그래프
New 차트 시간축 간격을 조정하는 방법 첨부파일 (1)
kimki**** | 2021.10.15 | 추천 0 | 조회 23
kimki**** 2021.10.15 0 23
4173 VBA
웹 크롤링 관련 문의 (2) 답변완료
숯검뎅이 | 2021.10.15 | 추천 0 | 조회 35
숯검뎅이 2021.10.15 0 35
4172 VBA
유저폼 리스트박스 검색 첨부파일 (2) 답변완료
007 | 2021.10.14 | 추천 0 | 조회 41
007 2021.10.14 0 41
4171 VBA
셀선택 관련 문의 드려요. (3) 답변완료
033cola | 2021.10.14 | 추천 0 | 조회 36
033cola 2021.10.14 0 36
4170 차트/그래프
특정 가로축을 강조하는 방법 및 세로축 단위 입력 방법이 궁금합니다. (3) 답변완료
sorryfo**** | 2021.10.14 | 추천 0 | 조회 29
sorryfo**** 2021.10.14 0 29
4169 VBA
파일의 경로 이동 VBA구문질문 (3) 답변완료
H.B | 2021.10.14 | 추천 0 | 조회 31
H.B 2021.10.14 0 31
4168 함수/공식
SUMIFS 함수 오류가 뜹니다! 첨부파일 (1)
AndOrEnd | 2021.10.14 | 추천 0 | 조회 33
AndOrEnd 2021.10.14 0 33
4167 함수/공식
각 시트 값 조건별로 취합하기 첨부파일 (2)
롤로랄라 | 2021.10.14 | 추천 0 | 조회 42
롤로랄라 2021.10.14 0 42
4166 VBA
변수에 worksheetfunction값 넣기 (9) 답변완료
kimki**** | 2021.10.14 | 추천 0 | 조회 40
kimki**** 2021.10.14 0 40
4165 VBA
행바꿈 관련 재질문. (3) 답변완료
H.B | 2021.10.14 | 추천 0 | 조회 31
H.B 2021.10.14 0 31
4164 함수/공식
INDEX함수 2번째,3번째 인수없이 사용이 가능한가요? (3)
월마리아 | 2021.10.13 | 추천 0 | 조회 37
월마리아 2021.10.13 0 37
4163 함수/공식
고수님들의 도움을 부탁드려요 첨부파일 (3)
왕코 | 2021.10.13 | 추천 0 | 조회 49
왕코 2021.10.13 0 49
4162 문서서식
설비 Layout 도면에서 장비번호 검색시 도형이 있는 위치로 이동하는 방법 첨부파일 (5)
아빠의꿈 | 2021.10.13 | 추천 1 | 조회 63
아빠의꿈 2021.10.13 1 63
4161 함수/공식
조건부서식 관련해서 문의 드려요 (2)
AgariFighter | 2021.10.13 | 추천 0 | 조회 33
AgariFighter 2021.10.13 0 33
4160 기능/도구
고수분들 도와주세요!! 도서관 책의 일렬번호를 매크로? 크롤링? 시킬 수는 없을까요? 첨부파일 (3)
Gemma | 2021.10.13 | 추천 0 | 조회 56
Gemma 2021.10.13 0 56