最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用SpeechRecognition庫(kù)實(shí)現(xiàn)語(yǔ)音識(shí)別功能

 更新時(shí)間:2026年01月22日 10:09:34   作者:禿了也弱了。  
SpeechRecognition 是 Python 生態(tài)中最主流的語(yǔ)音識(shí)別第三方庫(kù),它封裝了多個(gè)國(guó)內(nèi)外主流語(yǔ)音識(shí)別引擎的接口,本文將帶大家了解Python的SpeechRecognition庫(kù)的功能、使用方法,并通過(guò)具體案例掌握它在不同場(chǎng)景下的應(yīng)用,需要的朋友可以參考下

SpeechRecognition庫(kù)(待驗(yàn)證)

1、簡(jiǎn)介

SpeechRecognition 是 Python 生態(tài)中最主流的語(yǔ)音識(shí)別第三方庫(kù),它封裝了多個(gè)國(guó)內(nèi)外主流語(yǔ)音識(shí)別引擎的接口,讓你無(wú)需關(guān)注各引擎的底層實(shí)現(xiàn)(比如 API 簽名、數(shù)據(jù)格式轉(zhuǎn)換),只需調(diào)用簡(jiǎn)單的 Python API 就能快速實(shí)現(xiàn) “語(yǔ)音轉(zhuǎn)文字” 功能。

你希望詳細(xì)了解Python的SpeechRecognition庫(kù)的功能、使用方法,并通過(guò)具體案例掌握它在不同場(chǎng)景下的應(yīng)用,我會(huì)從庫(kù)的基礎(chǔ)介紹、核心概念,到不同使用場(chǎng)景的實(shí)戰(zhàn)案例逐步講解,讓你既能理解原理,也能直接上手使用。

支持的識(shí)別引擎(按實(shí)用度排序):

引擎網(wǎng)絡(luò)要求準(zhǔn)確率費(fèi)用中文適配核心特點(diǎn)
Google Web Speech API需網(wǎng)絡(luò)免費(fèi)(非商用)較好新手首選,無(wú)需申請(qǐng)密鑰
百度語(yǔ)音識(shí)別API需網(wǎng)絡(luò)很高免費(fèi)額度充足最優(yōu)專為中文優(yōu)化,需申請(qǐng)密鑰
CMU Sphinx離線較低免費(fèi)一般無(wú)網(wǎng)絡(luò)場(chǎng)景專用
Microsoft Bing Voice需網(wǎng)絡(luò)需申請(qǐng)密鑰較好微軟生態(tài)適配

Recognizer 類:核心類,所有語(yǔ)音識(shí)別操作都通過(guò)它完成(如噪聲校準(zhǔn)、音頻識(shí)別)。
AudioData 類:封裝音頻數(shù)據(jù)(采樣率、聲道、原始數(shù)據(jù)),是識(shí)別的輸入載體。

關(guān)鍵方法:
listen():從麥克風(fēng)采集音頻(返回 AudioData)。
record():從音頻文件讀取音頻(返回 AudioData)。
recognize_google():調(diào)用 Google API 識(shí)別音頻。
recognize_sphinx():調(diào)用 CMU Sphinx 離線識(shí)別。

2、安裝

# 1、核心庫(kù)安裝
pip install SpeechRecognition

# 2、該庫(kù)處理麥克風(fēng)實(shí)時(shí)語(yǔ)音需要依賴`PyAudio`:
pip install pyaudio
# 若安裝失?。╓indows 常見):先下載對(duì)應(yīng) Python 版本的PyAudio whl 文件(Unofficial Windows Binaries),再本地安裝
pip install PyAudio-0.2.13-cp310-cp310-win_amd64.whl

# 3、Mac 用戶:先裝底層依賴再裝 PyAudio
brew install portaudio
pip install pyaudio

# 4、若需離線識(shí)別,額外安裝
pip install pocketsphinx

3、使用

場(chǎng)景1:實(shí)時(shí)麥克風(fēng)語(yǔ)音識(shí)別(最常用,如語(yǔ)音助手)

通過(guò)麥克風(fēng)實(shí)時(shí)采集你的語(yǔ)音,轉(zhuǎn)成文字輸出。
需先校準(zhǔn)環(huán)境噪聲(否則會(huì)把背景音誤識(shí)別)。

import speech_recognition as sr

def microphone_recognition():
    # 1. 創(chuàng)建Recognizer實(shí)例
    r = sr.Recognizer()
    
    # 2. 獲取麥克風(fēng)設(shè)備(默認(rèn)麥克風(fēng))
    with sr.Microphone() as source:
        print("正在校準(zhǔn)環(huán)境噪聲,請(qǐng)保持安靜...")
        # 校準(zhǔn)噪聲:監(jiān)聽1秒,獲取背景噪聲水平(關(guān)鍵步驟,否則識(shí)別準(zhǔn)確率低)
        r.adjust_for_ambient_noise(source, duration=1)
        print("校準(zhǔn)完成,請(qǐng)開始說(shuō)話(說(shuō)完后會(huì)自動(dòng)識(shí)別)...")
        
        # 3. 監(jiān)聽麥克風(fēng)音頻(timeout=5表示5秒內(nèi)無(wú)語(yǔ)音則超時(shí))
        audio = r.listen(source, timeout=5, phrase_time_limit=10)  # phrase_time_limit限制單次語(yǔ)音最長(zhǎng)10秒
    
    # 4. 調(diào)用Google API識(shí)別語(yǔ)音
    try:
        print("正在識(shí)別...")
        # language="zh-CN"指定中文識(shí)別,默認(rèn)是英文
        # 若識(shí)別英文可改為`language="en-US"`。
        text = r.recognize_google(audio, language="zh-CN")
        print(f"你說(shuō)的內(nèi)容:{text}")
    except sr.WaitTimeoutError:
        print("錯(cuò)誤:超過(guò)5秒未檢測(cè)到語(yǔ)音輸入")
    except sr.UnknownValueError:
        print("錯(cuò)誤:無(wú)法識(shí)別你說(shuō)的內(nèi)容(語(yǔ)音模糊/無(wú)有效語(yǔ)音)")
    except sr.RequestError as e:
        print(f"錯(cuò)誤:調(diào)用Google API失敗 → {e}")

if __name__ == "__main__":
    microphone_recognition()

場(chǎng)景2:識(shí)別本地音頻文件(如處理錄音文件)

將本地音頻文件(如wav、flac格式)轉(zhuǎn)成文字。
該庫(kù)原生支持wav、aiff、flac格式,若為mp3需先轉(zhuǎn)換(可使用pydub庫(kù))。

import speech_recognition as sr

def audio_file_recognition(file_path):
    # 1. 創(chuàng)建Recognizer實(shí)例
    r = sr.Recognizer()
    
    # 2. 讀取音頻文件
    with sr.AudioFile(file_path) as source:
        # 讀取完整音頻(也可指定時(shí)長(zhǎng):r.record(source, duration=5) 讀取前5秒)
        audio = r.record(source)
    
    # 3. 識(shí)別音頻
    try:
        text = r.recognize_google(audio, language="zh-CN")
        print(f"音頻內(nèi)容:{text}")
    except sr.UnknownValueError:
        print("錯(cuò)誤:無(wú)法識(shí)別音頻內(nèi)容")
    except sr.RequestError as e:
        print(f"錯(cuò)誤:API調(diào)用失敗 → {e}")

if __name__ == "__main__":
    # 替換為你的音頻文件路徑(建議用wav格式)
    audio_file_recognition("test_audio.wav")

擴(kuò)展(處理MP3)
先安裝pydub和音頻解碼依賴:

pip install pydub
# Windows需下載ffmpeg并配置環(huán)境變量,Mac:brew install ffmpeg

轉(zhuǎn)換并識(shí)別MP3的代碼:

import speech_recognition as sr
from pydub import AudioSegment

# 轉(zhuǎn)換MP3為WAV
audio = AudioSegment.from_mp3("test_audio.mp3")
audio.export("test_audio_wav.wav", format="wav")

# 調(diào)用上面的識(shí)別函數(shù)
audio_file_recognition("test_audio_wav.wav")

場(chǎng)景3:離線語(yǔ)音識(shí)別(CMU Sphinx)

無(wú)網(wǎng)絡(luò)時(shí)識(shí)別語(yǔ)音(適合嵌入式設(shè)備、無(wú)網(wǎng)絡(luò)場(chǎng)景)。
準(zhǔn)確率遠(yuǎn)低于在線API,中文適配差,建議僅用于應(yīng)急場(chǎng)景。

import speech_recognition as sr

def offline_recognition():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source, duration=1)
        print("離線模式,請(qǐng)說(shuō)話...")
        audio = r.listen(source)
    
    try:
        # 離線識(shí)別(中文需額外配置語(yǔ)言包,默認(rèn)英文)
        text = r.recognize_sphinx(audio, language="zh-CN")
        print(f"離線識(shí)別結(jié)果:{text}")
    except sr.UnknownValueError:
        print("錯(cuò)誤:離線識(shí)別失敗(語(yǔ)音無(wú)法解析)")
    except sr.RequestError as e:
        print(f"錯(cuò)誤:Sphinx引擎初始化失敗 → {e}")

if __name__ == "__main__":
    offline_recognition()

場(chǎng)景4:百度語(yǔ)音識(shí)別(中文最優(yōu))

使用百度語(yǔ)音API識(shí)別(中文準(zhǔn)確率遠(yuǎn)超Google,有免費(fèi)額度)。

前置步驟:
1.登錄百度智能云,創(chuàng)建“語(yǔ)音識(shí)別”應(yīng)用,獲取APP_ID、API_KEY、SECRET_KEY。
2.安裝百度SDK:

   pip install baidu-aip
import speech_recognition as sr
from aip import AipSpeech

# 替換為你的百度應(yīng)用信息
APP_ID = "你的APP_ID"
API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"

def baidu_recognition(audio_data):
    # 初始化百度語(yǔ)音客戶端
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    
    # 將AudioData轉(zhuǎn)為百度要求的格式(pcm/16k/16位/單聲道)
    pcm_data = audio_data.get_raw_data(convert_rate=16000, convert_width=2)
    
    # 調(diào)用百度API識(shí)別
    result = client.asr(pcm_data, "pcm", 16000, {
        "dev_pid": 1536,  # 1536=普通話(支持簡(jiǎn)單的英文),1537=英語(yǔ)
    })
    
    if result["err_no"] == 0:
        return "".join(result["result"])
    else:
        raise Exception(f"百度API錯(cuò)誤:{result['err_msg']}")

# 主流程:麥克風(fēng)采集+百度識(shí)別
if __name__ == "__main__":
    r = sr.Recognizer()
    with sr.Microphone(sample_rate=16000) as source:  # 百度要求16k采樣率
        r.adjust_for_ambient_noise(source, duration=1)
        print("請(qǐng)說(shuō)話(百度語(yǔ)音識(shí)別)...")
        audio = r.listen(source)
    
    try:
        text = baidu_recognition(audio)
        print(f"百度識(shí)別結(jié)果:{text}")
    except Exception as e:
        print(f"識(shí)別失?。簕e}")

以上就是Python使用SpeechRecognition庫(kù)實(shí)現(xiàn)語(yǔ)音識(shí)別功能的詳細(xì)內(nèi)容,更多關(guān)于Python SpeechRecognition語(yǔ)音識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

临江市| 泽州县| 临武县| 河津市| 芦溪县| 宜城市| 平乐县| 北海市| 呈贡县| 拉萨市| 泸西县| 黄平县| 资兴市| 富锦市| 新巴尔虎右旗| 增城市| 莱芜市| 松原市| 湟中县| 城固县| 威海市| 巨鹿县| 霍城县| 四川省| 铁岭县| 绿春县| 灵璧县| 六枝特区| 屏南县| 富川| 雷波县| 侯马市| 恩施市| 称多县| 扬中市| 合山市| 凤山市| 武宁县| 东方市| 江达县| 花莲市|