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

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

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

樹莓派準(zhǔn)備

包的安裝

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

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

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

$ sudo apt install python3-build-hat

但是我們大概率會遇到包管理工具沖突的問題

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

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

虛擬環(huán)境

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

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

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

下一步,我們來通過指令: python -m venv --system-site-packages (你的項(xiàng)目名) 來創(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)用語音技術(shù)接口將音頻識別為文本數(shù)據(jù)返回
  • pip install pygame 安裝pygame依賴包, 將文本信息以音頻的格式播放出來

編程邏輯

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

第一步: 拾音

首先我們測試錄音設(shè)備是否存在。我們在樹莓派終端里面輸入指令:

arecord -l

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

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

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è)置通道個數(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ù)時間,單位為秒)

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

-M,–mmap(mmap流)

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

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

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

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

第二步:語音識別

通過百度語音識別服務(wù)(可以去官網(wǎng)上找一下,然后注冊應(yīng)用,獲得自己的 APP_ID, APP_KEYSECRET_KEY

根據(jù)百度語音識別官方給的文檔,我們來對接一下這個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普通話(支持簡單的英文識別)、1537普通話(純中文識別)、1737英語、1637粵語、1837四川話、1936普通話遠(yuǎn)場  
        result = client.asr(voices, 'wav', 16000, {'dev_pid': 1537})  
        result_text = result["result"][0]  
        print("我聽到你說: " + result_text)  
        return result_text  
    except KeyError:  
        print(result.get('err_no'))

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

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

很簡單,依據(jù) 文檔,我們來寫一下以下兩個函數(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)換 + 外放語音

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

import os
import sys


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

    # 識別正確返回語音二進(jìn)制 錯誤則返回dict 參照下面錯誤碼  
    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')

第五步:整合

詳情請閱覽 gitee 倉庫源碼

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

相關(guān)文章

  • 人工智能學(xué)習(xí)Pytorch教程Tensor基本操作示例詳解

    人工智能學(xué)習(xí)Pytorch教程Tensor基本操作示例詳解

    這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch教程Tensor的基本操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • Python pyinotify日志監(jiān)控系統(tǒng)處理日志的方法

    Python pyinotify日志監(jiān)控系統(tǒng)處理日志的方法

    這篇文章主要介紹了Python pyinotify日志監(jiān)控系統(tǒng)處理日志的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 詳解python中flask_caching庫的用法

    詳解python中flask_caching庫的用法

    這篇文章主要介紹了詳解python中flask_caching庫的用法,可以在一定的時間內(nèi)直接返回結(jié)果而不是每次都需要計(jì)算或者從數(shù)據(jù)庫中查找。flask_caching插件就是提供這種功能的神器,需要的朋友可以參考下
    2023-05-05
  • 利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    JSON(JavaScript Object Nonation)是利用鍵值對+嵌套來表示數(shù)據(jù)的一種格式,以其輕量、易解析的優(yōu)點(diǎn),這篇文章主要介紹了利用Python實(shí)現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換,需要的朋友可以參考下
    2019-07-07
  • 利用Python實(shí)現(xiàn)網(wǎng)絡(luò)測試的示例代碼

    利用Python實(shí)現(xiàn)網(wǎng)絡(luò)測試的示例代碼

    Speedtest CLI 為命令行帶來 Speedtest 背后的可信技術(shù)和全球服務(wù)器網(wǎng)絡(luò)。本文將利用它進(jìn)行網(wǎng)絡(luò)測試,感興趣的小伙伴可以了解一下
    2022-04-04
  • Python?pip下載包及所有依賴到指定文件夾的步驟說明

    Python?pip下載包及所有依賴到指定文件夾的步驟說明

    為了方便開發(fā)和部署,我們常常需要將Python項(xiàng)目所依賴的第三方包導(dǎo)出到本地文件夾中,這篇文章主要介紹了Python?pip下載包及所有依賴到指定文件夾的步驟說明,需要的朋友可以參考下
    2025-06-06
  • 在Python IDLE 下調(diào)用anaconda中的庫教程

    在Python IDLE 下調(diào)用anaconda中的庫教程

    這篇文章主要介紹了在Python IDLE 下調(diào)用anaconda中的庫教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python爬取基于m3u8協(xié)議的ts文件并合并

    python爬取基于m3u8協(xié)議的ts文件并合并

    這篇文章主要為大家詳細(xì)介紹了python爬取基于m3u8協(xié)議的ts文件并合并,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python包管理工具uv常用場景使用超詳細(xì)指南

    Python包管理工具uv常用場景使用超詳細(xì)指南

    UV是由Astral團(tuán)隊(duì)開發(fā)的高性能?Python環(huán)境管理器,旨在統(tǒng)一替代pyenv、pip、venv、pip-tools、pipenv等工具,這篇文章主要介紹了Python包管理工具uv常用場景使用的相關(guān)資料,需要的朋友可以參考下
    2025-06-06
  • python正則表達(dá)式最詳解

    python正則表達(dá)式最詳解

    篇文章主要介紹了Python中正則表達(dá)式的詳細(xì)解釋,正則表達(dá)式是Python學(xué)習(xí)進(jìn)階當(dāng)中的重要內(nèi)容,需要的朋友可以參考下
    2021-11-11

最新評論

汉阴县| 宜川县| 绥化市| 壤塘县| 乐至县| 汉川市| 双柏县| 霍林郭勒市| 南阳市| 泸定县| 河间市| 广德县| 玉溪市| 玉林市| 吉隆县| 隆尧县| 太仆寺旗| 石棉县| 寿阳县| 洮南市| 邹平县| 镇江市| 泗水县| 安阳县| 邹平县| 花垣县| 浮梁县| 临汾市| 金寨县| 收藏| 万全县| 蒙自县| 高青县| 敦煌市| 浙江省| 会泽县| 荔浦县| 日土县| 伊川县| 龙陵县| 武平县|