Python 如何使用麦克风作为源来检测音调?

Python 如何使用麦克风作为源来检测音调?,python,audio,speech-recognition,microphone,pitch,Python,Audio,Speech Recognition,Microphone,Pitch,如何使用麦克风作为音源来检测音高?把它打印出来。我已经看到一些来源,允许通过wav文件的沥青滞留,但我想知道是否有一种方法可以这样做,为前者 这是我工作的基地 import speech_recognition as sr r = sr.Recognizer() mic = sr.Microphone() with mic as source: r.adjust_for_ambient_noise(source, duration=0.3) audio = r.listen(so

如何使用麦克风作为音源来检测音高?把它打印出来。我已经看到一些来源,允许通过wav文件的沥青滞留,但我想知道是否有一种方法可以这样做,为前者

这是我工作的基地

import speech_recognition as sr
r = sr.Recognizer()
mic = sr.Microphone()
with mic as source:
    r.adjust_for_ambient_noise(source, duration=0.3)
    audio = r.listen(source)
    transcript = r.recognize_google(audio)
    print(transcript)
编辑:特别是,想要对男性/女性声音进行常规检测。

具有良好的音调检测方法和Python绑定。以下是您可以如何使用它:

import aubio
import numpy as np

samplerate = 44100
tolerance = 0.8
win_s = 4096 // downsample # fft size
hop_s = 512  // downsample # hop size

pitch_o = pitch("yin", win_s, hop_s, samplerate)
pitch_o.set_unit("Hz")
pitch_o.set_tolerance(tolerance)

signal_win = np.array_split(audio, np.arange(hop_s, len(audio), hop_s))

pitch_profile = []
for frame in signal_win[:-1]:
    pitch = pitch_o(frame)[0]
    if pitch > 0:
        pitch_profile.append(pitch)

if pitch_profile:
    pitch_array = np.array(pitch_profile)
    Q25, Q50, Q75 = np.quantile(pitch_array, [0.25, 0.50, 0.75])
    IQR = Q75 - Q25
    median = np.median(pitch_array)
    pitch_min = pitch_array.min()
    pitch_max = pitch_array.max()
显然,您需要以阵列格式获取音频。接下来要观察的是,在本文的代码中,我计算的是俯仰曲线的统计数据。原因是持续时间为0.3s,这比通常考虑用于基音跟踪的样本数要长得多

其他例子:

-我的密码。给出的示例来自该代码。
非常感谢。我会从这开始我对这一切都不熟悉。如何获得阵列格式的音频?此外,没有用于音频的透镜,因此我在那里也遇到了问题