亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Python實現(xiàn)從麥克風(fēng)獲取音頻并識別

 更新時間:2025年02月28日 08:30:38   作者:鳳梟香  
這篇文章主要為大家詳細(xì)介紹了如何使用Python實現(xiàn)從麥克風(fēng)獲取音頻并識別功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

python麥克風(fēng)獲取音頻并識別

麥克風(fēng)獲取

# 打開麥克風(fēng)流
stream = audio.open(format=FORMAT,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=CHUNK)

設(shè)置參數(shù)

# 錄音參數(shù)
FORMAT = pyaudio.paInt16  # 16-bit resolution
CHANNELS = 1              # 單聲道
RATE = 16000              # 采樣率 16kHz
CHUNK = 1024              # 數(shù)據(jù)塊大小
RECORD_SECONDS = 5        # 錄制時長 (秒)
WAVE_OUTPUT_FILENAME = "output.wav"

讀取數(shù)據(jù)塊

# 循環(huán)讀取數(shù)據(jù)塊
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

阿里語音識別模型加載

paraformer_path = "./iic/speech_paraformer-large-vad-punc-spk_asr_nat-zh-cn"
fsmn_path = "./iic/speech_fsmn_vad_zh-cn-16k-common-pytorch"
ct_punc_path = "./iic/punc_ct-transformer_cn-en-common-vocab471067-large"
cam_path = "./iic/speech_campplus_sv_zh-cn_16k-common"

model = AutoModel(model=paraformer_path, model_revision="v2.0.4",
                  vad_model=fsmn_path, vad_model_revision="v2.0.4",
                  punc_model=ct_punc_path, punc_model_revision="v2.0.4",
                  spk_model=cam_path, spk_model_revision="v2.0.2",
                  device="cpu"
                  )

阿里語音識別

res = model.generate(input=WAVE_OUTPUT_FILENAME,
                     batch_size_s=16000,
                     hotword='魔搭')

整體代碼

import pyaudio
import wave
import threading
import keyboard
from funasr import AutoModel

# 錄音參數(shù)
FORMAT = pyaudio.paInt16  # 16-bit resolution
CHANNELS = 1  # 單聲道
RATE = 16000  # 采樣率 16kHz
CHUNK = 1024  # 數(shù)據(jù)塊大小
WAVE_OUTPUT_FILENAME = "./wav_data/output.wav"

# 初始化 PyAudio
audio = pyaudio.PyAudio()

frames = []
stream = None
recording = False

paraformer_path = "./iic/speech_paraformer-large-vad-punc-spk_asr_nat-zh-cn"
fsmn_path = "./iic/speech_fsmn_vad_zh-cn-16k-common-pytorch"
ct_punc_path = "./iic/punc_ct-transformer_cn-en-common-vocab471067-large"
cam_path = "./iic/speech_campplus_sv_zh-cn_16k-common"

model = AutoModel(model=paraformer_path, model_revision="v2.0.4",
                  vad_model=fsmn_path, vad_model_revision="v2.0.4",
                  punc_model=ct_punc_path, punc_model_revision="v2.0.4",
                  spk_model=cam_path, spk_model_revision="v2.0.2",
                  device="cpu"
                  )

print("加載模型完成?。?!")


def start_recording():
    """
    開始錄音
    """
    global stream, recording
    if not recording:
        print("開始錄音...")
        recording = True
        stream = audio.open(format=FORMAT,
                            channels=CHANNELS,
                            rate=RATE,
                            input=True,
                            frames_per_buffer=CHUNK)
        record_thread = threading.Thread(target=record_audio)
        record_thread.start()


def stop_recording():
    """
    停止錄音并進(jìn)行識別
    """
    global stream, recording
    if recording:
        print("錄音結(jié)束.")
        recording = False
        stream.stop_stream()
        stream.close()
        save_audio()
        audio.terminate()
        print("開始識別?。?!")
        res = model.generate(input=WAVE_OUTPUT_FILENAME,
                             batch_size_s=16000,
                             hotword='魔搭')
        print("識別結(jié)束?。?!")
        print("識別結(jié)果:", res)


def record_audio():
    """
    錄音功能實現(xiàn)
    """
    while recording:
        data = stream.read(CHUNK)
        frames.append(data)


def save_audio():
    """
    保存錄音文件
    """
    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(audio.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()


# 監(jiān)聽 Ctrl 鍵開始錄音
keyboard.add_hotkey('ctrl', start_recording)

# 監(jiān)聽 Alt 鍵結(jié)束錄音
keyboard.add_hotkey('alt', stop_recording)

print("按 Ctrl 開始錄音,按 Alt 結(jié)束錄音")
keyboard.wait()  # 保持程序運(yùn)行

到此這篇關(guān)于使用Python實現(xiàn)從麥克風(fēng)獲取音頻并識別的文章就介紹到這了,更多相關(guān)Python麥克風(fēng)獲取音頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中類似于jquery的pyquery庫用法分析

    Python中類似于jquery的pyquery庫用法分析

    這篇文章主要介紹了Python中類似于jquery的pyquery庫用法,結(jié)合實例形式分析了pyquery庫的概念、原理、使用方法及操作技巧,需要的朋友可以參考下
    2019-12-12
  • 使用Python操作Excel中圖片的基礎(chǔ)示例(插入、替換、提取、刪除)

    使用Python操作Excel中圖片的基礎(chǔ)示例(插入、替換、提取、刪除)

    Excel是主要用于處理表格和數(shù)據(jù)的工具,我們也能在其中插入、編輯或管理圖片,為工作表增添視覺效果,提升報告的吸引力,本文將詳細(xì)介紹如何使用Python操作Excel中的圖片,文中有詳細(xì)代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • pandas交換行的具體實現(xiàn)

    pandas交換行的具體實現(xiàn)

    Pandas?是專注于表格數(shù)據(jù)處理的?Python?第三方庫,能幫助我們完成各種各樣的表格數(shù)據(jù)操作,本文主要介紹了pandas交換行的具體實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 利用pyinstaller將py文件打包為exe的方法

    利用pyinstaller將py文件打包為exe的方法

    本篇文章主要介紹了利用pyinstaller將py文件打包為exe的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • python批量讀取文件名并寫入txt文件中

    python批量讀取文件名并寫入txt文件中

    這篇文章主要為大家詳細(xì)介紹了python批量讀取文件名并寫入txt文件中,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 深入了解Django View(視圖系統(tǒng))

    深入了解Django View(視圖系統(tǒng))

    這篇文章主要介紹了簡單了解Django View(視圖系統(tǒng)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 利用Python寫一個爬妹子的爬蟲

    利用Python寫一個爬妹子的爬蟲

    這篇文章主要給大家介紹了關(guān)于利用Python寫一個爬妹子爬蟲的相關(guān)資料,文中通過實例代碼將實現(xiàn)的方法一步步介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • pip安裝python庫時報錯的問題解決

    pip安裝python庫時報錯的問題解決

    本文主要介紹了在Windows系統(tǒng)上解決pip命令找不到的問題的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Matplotlib繪制條形圖的方法你知道嗎

    Matplotlib繪制條形圖的方法你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Matplotlib繪制條形圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2022-03-03
  • 詳解Python是如何處理不同時區(qū)的

    詳解Python是如何處理不同時區(qū)的

    時區(qū)是指在地球上不同地方的時間差異,地球分為?24?個時區(qū),每個時區(qū)都相對于格林威治標(biāo)準(zhǔn)時間或協(xié)調(diào)世界時(UTC)有所偏移。本文主要和大家來聊聊Python是如何處理不同時區(qū)的,希望對大家有所幫助
    2023-02-02

最新評論