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

VBA
작성자
양송이
작성일
2021-10-05 15:58
조회
433
엑셀버전 : 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

     

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


전체 7,900
번호 카테고리 제목 작성자 작성일 추천 조회
알림
🎉 오피스 분야 30주 연속 1위! - 「 진짜쓰는 실무엑셀 」 전자책이 출간되었습니다! (14)
오빠두엑셀 | 2022.09.28 | 추천 7 | 조회 594
오빠두엑셀 2022.09.28 7 594
공지사항 함수/공식
[신규 기능 업데이트!] 👉 이제 게시글 작성시 스크린샷 복/붙이 가능합니다! 😎 (3)
오빠두엑셀 | 2022.08.04 | 추천 5 | 조회 1798
오빠두엑셀 2022.08.04 5 1798
공지사항 함수/공식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (100)
오빠두엑셀 | 2021.10.28 | 추천 128 | 조회 7603
오빠두엑셀 2021.10.28 128 7603
42888 함수/공식
New 나와 골프라운딩을 한 횟수 구하는 방법 엑셀파일
o**** | 00:05 | 추천 0 | 조회 18
o**** 00:05 - 18
42886 함수/공식
New 엑셀 함수 식을 어떻게 만들어야 할지 모르겠습니다 ㅠㅠ 엑셀파일 (1)
dfgkdflglkdf | 2022.10.06 | 추천 0 | 조회 18
dfgkdflglkdf 2022.10.06 - 18
42884 함수/공식
New match + index 수식 사용후 나오는 텍스트 값에 조건수식을 걸어 줄임말 텍스트 추출 오류 엑셀파일 (2)
로링 | 2022.10.06 | 추천 0 | 조회 19
로링 2022.10.06 - 19
42878 함수/공식
New IF 함수 1900-01-00 안나오게 할려면 어떻게 해야 하나요? 첨부파일 (2) 답변완료
선도부 | 2022.10.06 | 추천 0 | 조회 35
선도부 2022.10.06 - 35
42876 구글시트
New 조건부서식 관련(다중 중복값) 문의 드립니다 엑셀파일첨부파일 (2)
거꾸로문 | 2022.10.06 | 추천 0 | 조회 23
거꾸로문 2022.10.06 - 23
42873 함수/공식
New 특정 행에 특정 텍스트가 몇개 써있는지 구하는 식 엑셀파일 (2) 답변완료
이주 | 2022.10.06 | 추천 0 | 조회 29
이주 2022.10.06 - 29
42872 문서서식
New 조건부 서식 관련 질문 (1)
아홉열 | 2022.10.06 | 추천 0 | 조회 26
아홉열 2022.10.06 - 26
42869 함수/공식
New 텍스트에 비교연산자 사용시 에러처리 (2) 답변완료
쌈타 | 2022.10.06 | 추천 0 | 조회 29
쌈타 2022.10.06 - 29
42863 기능/도구
New 매번 뭐만 쓰거나 하면 몇십초정도 다운 상태가 됩니다ㅜㅜ (2)
jeongd**** | 2022.10.06 | 추천 0 | 조회 33
jeongd**** 2022.10.06 - 33
42860 VBA
New 입력 범위 코딩했는데 적용이 잘 안되어요 엑셀파일첨부파일
은이랑 | 2022.10.06 | 추천 0 | 조회 30
은이랑 2022.10.06 - 30
42858 함수/공식
New 1~10개의 데이터 중 몇번째 까지 데이터 가져오기가 가능한가요? 첨부파일 (3) 답변완료
아드키 | 2022.10.06 | 추천 0 | 조회 33
아드키 2022.10.06 - 33
42854 문서서식
New 파일 저장 후 다시 열었을 때 특정 부분 서식이 저절로 바뀌어 있는 문제
보리건빵 | 2022.10.06 | 추천 0 | 조회 20
보리건빵 2022.10.06 - 20
42851 함수/공식
New BOM 관리 (2)
정길이 | 2022.10.06 | 추천 0 | 조회 36
정길이 2022.10.06 - 36
42850 함수/공식
New 성장률(신장률) 해석 및 기본 함수가 이게 맞을까요,,? 첨부파일
NANA77 | 2022.10.06 | 추천 0 | 조회 18
NANA77 2022.10.06 - 18
42849 피벗테이블
New 피벗테이블단축키가안되요. 첨부파일 (1)
플립플랩 | 2022.10.06 | 추천 0 | 조회 16
플립플랩 2022.10.06 - 16
42846 파워쿼리/피벗
New 액세스에서 파워쿼리로 데이터 불러올때 자동업데이트 방법 (4)
하모닉스 | 2022.10.06 | 추천 0 | 조회 22
하모닉스 2022.10.06 - 22
42843 함수/공식
New if ifs and 다중 함수좀 알려주세요 첨부파일 (3) 답변완료
동하 | 2022.10.06 | 추천 0 | 조회 32
동하 2022.10.06 - 32
42839 함수/공식
New 상품 가격수준별 분포 구하는 법(+그래프) 엑셀파일 (1)
sue22 | 2022.10.05 | 추천 0 | 조회 28
sue22 2022.10.05 - 28
42838 VBA
New VBA 코딩 중인데.. 어렵네요 엑셀파일첨부파일
실런 | 2022.10.05 | 추천 0 | 조회 43
실런 2022.10.05 - 43
42836 함수/공식
New 엑셀 함수 관련해서 문의 드리고자 합니다. 엑셀파일 (2) 답변완료
dfgkdflglkdf | 2022.10.05 | 추천 0 | 조회 40
dfgkdflglkdf 2022.10.05 - 40
42835 문서서식
New 부등호 ≥ 가 엑셀에 들어가면 줄이 엉망으로 변합니다.. (1)
석준필 | 2022.10.05 | 추천 0 | 조회 28
석준필 2022.10.05 - 28
42834 문서서식
New 엑셀에서 '배경 제거'말고 '배경 채우기'기능도 있나요? (2)
월마리아 | 2022.10.05 | 추천 0 | 조회 26
월마리아 2022.10.05 - 26
42833
New 엑셀VBA 재무제표 크롤링 질문드립니다.
영푸라기 | 2022.10.05 | 추천 0 | 조회 23
영푸라기 2022.10.05 - 23
42832 함수/공식
New 2차원 TABLE 검색 엑셀파일 (5)
대빵 | 2022.10.05 | 추천 0 | 조회 33
대빵 2022.10.05 - 33
42828 함수/공식
New index, match, maxif관련 서식 엑셀파일첨부파일 (2) 답변완료
| 2022.10.05 | 추천 0 | 조회 40
2022.10.05 - 40
42820 VBA
New 외국어공부를 위한 원문사이에 해석을 열에 끼워넣기 (2) 답변완료
ㅈㄱㄹ | 2022.10.05 | 추천 0 | 조회 39
ㅈㄱㄹ 2022.10.05 - 39
42819 구글시트
New 숨긴 셀 제외 스프레드시트 적용 엑셀파일첨부파일
거꾸로문 | 2022.10.05 | 추천 0 | 조회 33
거꾸로문 2022.10.05 - 33
42816 함수/공식
New 함수 사용 시 특정 셀 텍스트 추출 하는 경우 첨부파일 (6) 답변완료
구찌갱 | 2022.10.05 | 추천 0 | 조회 44
구찌갱 2022.10.05 - 44
42813 구글시트
New SMALL 함수 관련 숨긴 셀 값 제외 엑셀파일첨부파일 (10) 답변완료
거꾸로문 | 2022.10.05 | 추천 0 | 조회 37
거꾸로문 2022.10.05 - 37
42809 함수/공식
New Bar code128 수식을 인식못하네요 엑셀파일첨부파일 (4) 답변완료
어린왕자77 | 2022.10.05 | 추천 0 | 조회 39
어린왕자77 2022.10.05 - 39