欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python構(gòu)建一個(gè)智能語(yǔ)音機(jī)器人

 更新時(shí)間:2023年12月21日 08:20:00   作者:狼_先生  
這篇文章主要為大家詳細(xì)介紹了如何基于Python構(gòu)建一個(gè)智能語(yǔ)音機(jī)器人,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

樹莓派準(zhǔn)備

包的安裝

Python 3 默認(rèn)安裝在 Raspberry Pi 操作系統(tǒng)上,并用于許多重要功能。干擾系統(tǒng) Python 安裝可能會(huì)導(dǎo)致操作系統(tǒng)出現(xiàn)問(wèn)題,因此,如果安裝第三方 Python 庫(kù),請(qǐng)使用正確的包管理工具,這一點(diǎn)很重要。

有兩種方法可以將庫(kù)安裝到默認(rèn)python 發(fā)行版中。您可以使用 apt 并安裝預(yù)配置的系統(tǒng)軟件包,也可以使用 pip 安裝未作為 Raspberry Pi OS 的一部分分發(fā)的軟件包。

例如,要安裝 Python 3 庫(kù)以支持 Raspberry Pi 構(gòu)建 HAT,您需要:

$ sudo apt install python3-build-hat

但是我們大概率會(huì)遇到包管理工具沖突的問(wèn)題

產(chǎn)生此錯(cuò)誤的原因是您嘗試將第三方包安裝到系統(tǒng) Python 中。對(duì)于 Python 用戶來(lái)說(shuō),一個(gè)長(zhǎng)期存在的實(shí)際問(wèn)題是操作系統(tǒng)包管理器(如 apt)與 Python 特定的包管理工具(如 pip)之間的沖突。這些沖突包括 Python 級(jí) API 不兼容和文件所有權(quán)沖突。

因此,從 Bookworm 開始,通過(guò) pip 安裝的軟件包必須使用 < /span>venv。虛擬環(huán)境是一個(gè)容器,您可以在其中安全地安裝第三方模塊,這樣它們就不會(huì)干擾或破壞您的 Python 系統(tǒng)。

虛擬環(huán)境

要使用虛擬環(huán)境,您需要?jiǎng)?chuàng)建一個(gè)容器來(lái)存儲(chǔ)環(huán)境。您可以通過(guò)多種方法來(lái)完成此操作,具體取決于您想要使用 Python 的方式。您可以繼續(xù)的一種方法是為您創(chuàng)建的每個(gè) Python 項(xiàng)目創(chuàng)建一個(gè)新的虛擬環(huán)境。在這里,您將創(chuàng)建一個(gè)目錄來(lái)保存您自己的代碼以及虛擬環(huán)境目錄:

$ mkdir my_project
$ cd my_project
$ python -m venv (你的項(xiàng)目名)

如果您現(xiàn)在查看 my_project 目錄,您將看到一個(gè)名為 你的項(xiàng)目名 的目錄。

下一步,我們來(lái)通過(guò)指令: python -m venv --system-site-packages (你的項(xiàng)目名) 來(lái)創(chuàng)建虛擬環(huán)境。`

$ source (你的項(xiàng)目名)/bin/activate

(你的項(xiàng)目名) $

現(xiàn)在我們就可以使用 pip 進(jìn)行安裝了。

Pycharm準(zhǔn)備

所需要的包

以下是需要安裝的一些python依賴包

  • pip install speech_recognition 安裝speech_recognition依賴包, 用于錄音、生成wav文件
  • pip install baidu-aip 安裝百度AI的sdk, 調(diào)用語(yǔ)音技術(shù)接口將音頻識(shí)別為文本數(shù)據(jù)返回
  • pip install pygame 安裝pygame依賴包, 將文本信息以音頻的格式播放出來(lái)

編程邏輯

  • 第一步: “拾音”
  • 第二步: STT轉(zhuǎn)換
  • 第三步: MOSS機(jī)器人回復(fù)文本
  • 第四步: TTS轉(zhuǎn)換 + 語(yǔ)音合成
  • 第五步: 外放語(yǔ)音

第一步: 拾音

首先我們測(cè)試錄音設(shè)備是否存在。我們?cè)跇漭山K端里面輸入指令:

arecord -l

會(huì)得到如下回復(fù):

這就是說(shuō)明我們的設(shè)備是存在的。我們也能在這里看到有幾個(gè)設(shè)備,可以選擇用哪個(gè)。

arecord -D "plughw:3" -f S16_LE -r16000 -d4 /home/admin/PyCode/WS_Project_MOSS/voices/myvoices.wav

參數(shù)解析

- -D 指定錄音設(shè)備,-D hw:1,0的意思就是選用card1(SmartIC Audio Device)設(shè)備錄音

- -c 設(shè)置通道個(gè)數(shù),-c2的意思就是錄制2通道的音頻文件

- -r 設(shè)置采樣率,-r16000的意思就是設(shè)置采樣率為16000

- -f 指定錄音格式,-fS16_LE的意思就是錄制S16_LE格式的音頻文件

-h,—help(幫助)

-V,–version(打印版本信息)

-l,–list-devices(列出全部聲卡和數(shù)字音頻設(shè)備)

-L,–list-pcms(列出全部PCM定義)

-D,–device(指定PCM設(shè)備名稱)

-q,–quiet(安靜模式)

-t,–file-type(文件類型voc,wav,raw或au)

-c,–channels(設(shè)置通道數(shù))

-f,–format(設(shè)置格式)

-r,–rate(設(shè)置頻率)

-d,–duration(設(shè)置持續(xù)時(shí)間,單位為秒)

-s,–sleep-min(設(shè)置最小休眠時(shí)間)

-M,–mmap(mmap流)

-N,–nonblock(設(shè)置為非塊模式)

-B,–buffer-time(緩沖持續(xù)時(shí)長(zhǎng),單位為微秒)

-v,–verbose(顯示PCM結(jié)構(gòu)和設(shè)置)

-I,–separate-channels(設(shè)置為每個(gè)通道一個(gè)單獨(dú)文件)

第二步:語(yǔ)音識(shí)別

通過(guò)百度語(yǔ)音識(shí)別服務(wù)(可以去官網(wǎng)上找一下,然后注冊(cè)應(yīng)用,獲得自己的 APP_IDAPP_KEY, SECRET_KEY

根據(jù)百度語(yǔ)音識(shí)別官方給的文檔,我們來(lái)對(duì)接一下這個(gè)API接口

from aip import AipSpeech
import request
import json



# 配置一下API接口所需要的參數(shù)
APP_ID = '___________'  
API_KEY = '________________'  
SECRET_KEY = '___________________'  
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  
path = 'voices/myvoices.wav'


def listen():  
    # 讀取錄音文件  
    with open(path, 'rb') as fp:  
    voices = fp.read()  
    try:  
        # 參數(shù)dev_pid:1536普通話(支持簡(jiǎn)單的英文識(shí)別)、1537普通話(純中文識(shí)別)、1737英語(yǔ)、1637粵語(yǔ)、1837四川話、1936普通話遠(yuǎn)場(chǎng)  
        result = client.asr(voices, 'wav', 16000, {'dev_pid': 1537})  
        result_text = result["result"][0]  
        print("我聽(tīng)到你說(shuō): " + result_text)  
        return result_text  
    except KeyError:  
        print(result.get('err_no'))

第三步:機(jī)器人的思考回答

現(xiàn)在我們來(lái)等待機(jī)器人的回復(fù)。這里我們需要調(diào)用接口,我們現(xiàn)在使用的是 ERNIE-BOT-4.0, 我們后續(xù)會(huì)嘗試一下調(diào)用 ChatGPT的API接口,就相當(dāng)于是把機(jī)器人的大腦換一下。

很簡(jiǎn)單,依據(jù) 文檔,我們來(lái)寫一下以下兩個(gè)函數(shù)。

def get_access_token():  
    """  
    使用 API Key,Secret Key 獲取access_token,替換下列應(yīng)用API Key、應(yīng)用Secret Key  
    """  

    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的信息&client_secret=你的信息"  

    payload = json.dumps("")  
    headers = {  
    'Content-Type': 'application/json',  
    'Accept': 'application/json'  
    }  

    response = requests.request("POST", url, headers=headers, data=payload)  
    return response.json().get("access_token")
    

def bot(question):  
    # url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" + get_access_token()  
    url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=24.3990f1717b7636be7b8a4de154a49b5a.2592000.1705210204.282335-45017968"  

    payload = json.dumps({  
        "messages": [  
        {  
            "role": "user",  
            "content": f"{question}"  
        }]  
        })  
        headers = {  
            'Content-Type': 'application/json'  
        }  

    response = requests.request("POST", url, headers=headers, data=payload)  

    temp = json.loads(response.text)  
    print(temp.get('result'))  
    return temp.get('result')

第四步:TTS轉(zhuǎn)換 + 外放語(yǔ)音

接下來(lái),我們要把機(jī)器人回復(fù)給我們的文字轉(zhuǎn)換成語(yǔ)音

import os
import sys


def say(response):  
    result = client.synthesis(f'{response}', 'zh', 1, {  
        'vol': 5,  
    })  

    # 識(shí)別正確返回語(yǔ)音二進(jìn)制 錯(cuò)誤則返回dict 參照下面錯(cuò)誤碼  
    if not isinstance(result, dict):  
        with open('robot/audio.mp3', 'wb') as f:  
            f.write(result)
            
    os.system('sudo aplay /home/admin/PyCode/WS_Project_MOSS/robot/audio.mp3')

第五步:整合

詳情請(qǐng)閱覽 gitee 倉(cāng)庫(kù)源碼

到此這篇關(guān)于基于Python構(gòu)建一個(gè)智能語(yǔ)音機(jī)器人的文章就介紹到這了,更多相關(guān)Python語(yǔ)音機(jī)器人內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python常見(jiàn)工廠函數(shù)用法示例

    Python常見(jiàn)工廠函數(shù)用法示例

    這篇文章主要介紹了Python常見(jiàn)工廠函數(shù)用法,簡(jiǎn)單描述了工廠函數(shù)的功能、定義并結(jié)合具體實(shí)例形式分析了Python常見(jiàn)工廠函數(shù)的相關(guān)使用技巧,需要的朋友可以參考下
    2018-03-03
  • Python實(shí)現(xiàn)批量識(shí)別圖片文字并存為Excel

    Python實(shí)現(xiàn)批量識(shí)別圖片文字并存為Excel

    批量文字識(shí)別是Python辦公自動(dòng)化的基本操作,應(yīng)用在我們工作生活中的方方面面。本文主要以開源免費(fèi)的easyocr來(lái)實(shí)現(xiàn)批量識(shí)別圖片文字并存為Excel,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • django站點(diǎn)管理詳解

    django站點(diǎn)管理詳解

    這篇文章主要介紹了django站點(diǎn)管理詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • python實(shí)現(xiàn)sqlalchemy的使用概述

    python實(shí)現(xiàn)sqlalchemy的使用概述

    SQLAlchemy是Python中最有名的ORM工具,特點(diǎn)是操縱Python對(duì)象而不是SQL查詢,也就是在代碼層面考慮的是對(duì)象,而不是SQL,體現(xiàn)的是一種程序化思維,這樣使得Python程序更加簡(jiǎn)潔易懂,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-08-08
  • python 自動(dòng)去除空行的實(shí)例

    python 自動(dòng)去除空行的實(shí)例

    今天小編就為大家分享一篇python 自動(dòng)去除空行的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • python剪切視頻與合并視頻的實(shí)現(xiàn)

    python剪切視頻與合并視頻的實(shí)現(xiàn)

    這篇文章主要介紹了python剪切視頻與合并視頻的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Pytorch之如何dropout避免過(guò)擬合

    Pytorch之如何dropout避免過(guò)擬合

    這篇文章主要介紹了Pytorch 如何dropout避免過(guò)擬合的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Pandas數(shù)據(jù)處理加速技巧匯總

    Pandas數(shù)據(jù)處理加速技巧匯總

    Pandas?處理數(shù)據(jù)的效率還是很優(yōu)秀的,相對(duì)于大規(guī)模的數(shù)據(jù)集只要掌握好正確的方法,就能讓在數(shù)據(jù)處理時(shí)間上節(jié)省很多很多的時(shí)間。本文為大家匯總了一些Pandas數(shù)據(jù)處理加速技巧,需要的可以參考一下
    2022-04-04
  • Python語(yǔ)法垃圾回收機(jī)制原理解析

    Python語(yǔ)法垃圾回收機(jī)制原理解析

    這篇文章主要介紹了Python語(yǔ)法垃圾回收機(jī)制原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 詳細(xì)聊聊為什么Python中0.2+0.1不等于0.3

    詳細(xì)聊聊為什么Python中0.2+0.1不等于0.3

    最近在學(xué)習(xí)過(guò)程中發(fā)現(xiàn)在計(jì)算機(jī)JS時(shí)發(fā)現(xiàn)了一個(gè)非常有意思事,0.1+0.2的結(jié)果不是0.3,而是0.30000000000000004,下面這篇文章主要給大家介紹了關(guān)于為什么Python中0.2+0.1不等于0.3的相關(guān)資料,需要的朋友可以參考下
    2022-12-12

最新評(píng)論