精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我創(chuàng)建了一個由 ChatGPT API 提供支持的語音聊天機器人,方法請收下

人工智能
今天這篇文章的重點是使用 ChatGPT API 創(chuàng)建私人語音 Chatbot Web 應(yīng)用程序。目的是探索和發(fā)現(xiàn)人工智能的更多潛在用例和商業(yè)機會。我將逐步指導(dǎo)您完成開發(fā)過程,以確保您理解并可以復(fù)制自己的過程。

今天這篇文章的重點是使用 ChatGPT API 創(chuàng)建私人語音 Chatbot Web 應(yīng)用程序。目的是探索和發(fā)現(xiàn)人工智能的更多潛在用例和商業(yè)機會。我將逐步指導(dǎo)您完成開發(fā)過程,以確保您理解并可以復(fù)制自己的過程。

為什么需要

  • 不是每個人都?xì)g迎基于打字的服務(wù),想象一下仍在學(xué)習(xí)寫作技巧的孩子或無法在屏幕上正確看到單詞的老年人。基于語音的 AI Chatbot 是解決這個問題的方法,就像它如何幫助我的孩子要求他的語音 Chatbot 給他讀睡前故事一樣。
  • 鑒于現(xiàn)有可用的助手選項,例如,蘋果的 Siri 和亞馬遜的 Alexa,在 GPT 模型中加入語音交互可以開辟更廣泛的可能性。ChatGPT API 具有創(chuàng)建連貫且與上下文相關(guān)的響應(yīng)的卓越能力的優(yōu)勢,結(jié)合基于語音的智能家居連接的想法,可能會提供大量的商機。我們在本文中創(chuàng)建的語音助手將作為入口。

足夠的理論,讓我們開始吧。

1.框圖

在這個應(yīng)用程序中,我們按處理順序分為三個關(guān)鍵模塊:

  • Bokeh 和 Web Speech API 的語音轉(zhuǎn)文本
  • 通過 OpenAI GPT-3.5 API 完成聊天
  • gTTS 文本轉(zhuǎn)語音

Web框架由Streamlit構(gòu)建。

如果您已經(jīng)知道如何使用 GPT 3.5 模型下的 OpenAI API 以及如何使用 Streamlit 設(shè)計 Web 應(yīng)用程序,建議您跳過第 1 部分和第 2 部分以節(jié)省閱讀時間。

2. OpenAI GPT API

獲取您的 API 密鑰

如果您已經(jīng)擁有一個 OpenAI API 密鑰,請堅持使用它而不是創(chuàng)建一個新密鑰。但是,如果您是 OpenAI 新手,請注冊一個新帳戶并在您的帳戶菜單中找到以下頁面:

生成 API 密鑰后,請記住它只會顯示一次,因此請確保將其復(fù)制到安全的地方以備將來使用。

ChatCompletion API 的使用

目前GPT-4.0剛剛發(fā)布,該模型的API還沒有完全發(fā)布,所以我將介紹開發(fā)仍然是GPT 3.5模型,它足以完成我們的AI語音Chatbot演示。

現(xiàn)在讓我們看一下來自 OpenAI 的最簡單的演示,以了解 ChatCompletion API(或稱為 gpt-3.5 API 或 ChatGPT API)的基本定義:

安裝包:

!pip install opena

如果您之前從 OpenAI 開發(fā)了一些遺留 GPT 模型,您可能必須通過 pip 升級您的包:

!pip install --upgrade openai

創(chuàng)建并發(fā)送提示:

import openai
complete = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)

接收文本響應(yīng):

message=complete.choices[0].message.content

因為 GPT 3.5 API 是基于聊天的文本完成 API,所以請確保 ChatCompletion 請求的消息正文包含對話歷史記錄作為上下文,您希望模型參考更上下文相關(guān)的響應(yīng)來響應(yīng)您的當(dāng)前請求。

為了實現(xiàn)此功能,消息體的列表對象應(yīng)按以下順序組織:

  • 系統(tǒng)消息定義為通過在消息列表頂部的內(nèi)容中添加指令來設(shè)置聊天機器人的行為。如介紹中所述,目前此功能尚未在 gpt-3.5-turbo-0301 中完全釋放。
  • 用戶消息表示用戶的輸入或查詢,而助手消息是指來自 GPT-3.5 API 的相應(yīng)響應(yīng)。這樣的成對對話為有關(guān)上下文的模型提供了參考。
  • 最后一條用戶消息是指當(dāng)前時刻請求的提示。

3. 網(wǎng)頁開發(fā)

我們將繼續(xù)使用強大的 Streamlit 庫來構(gòu)建 Web 應(yīng)用程序。

Streamlit 是一個開源框架,它使數(shù)據(jù)科學(xué)家和開發(fā)人員能夠快速構(gòu)建和共享用于機器學(xué)習(xí)和數(shù)據(jù)科學(xué)項目的交互式 Web 應(yīng)用程序。它還提供了一堆小部件,只需要一行 python 代碼即可創(chuàng)建,如 st.table(...)。

如果您不太擅長 Web 開發(fā)并且不愿意像我一樣構(gòu)建大型商業(yè)應(yīng)用程序,Streamlit 始終是您的最佳選擇之一,因為它幾乎不需要 HTML 方面的專業(yè)知識。

讓我們看一個構(gòu)建 Streamlit Web 應(yīng)用程序的快速示例:

安裝包:

!pip install streamlit

創(chuàng)建一個 Python 文件“demo.py”:

import streamlit as st


st.write("""
# My First App
Hello *world!*
""")

在本地機器或遠程服務(wù)器上運行:

!python -m streamlit run demo.py

打印此輸出后,您可以通過列出的地址和端口訪問您的網(wǎng)站:

You can now view your Streamlit app in your browser.


Network URL: http://xxx.xxx.xxx.xxx:8501
External URL: http://xxx.xxx.xxx.xxx:8501

圖片

Streamlit 提供的所有小部件的用法可以在其文檔頁面中找到:https://docs.streamlit.io/library/api-reference

4.語音轉(zhuǎn)文字的實現(xiàn)

此 AI 語音聊天機器人的主要功能之一是它能夠識別用戶語音并生成我們的 ChatCompletion API 可用作輸入的適當(dāng)文本。

OpenAI 的 Whisper API 提供的高質(zhì)量語音識別是一個很好的選擇,但它是有代價的。或者,來自 Javascript 的免費 Web Speech API 提供可靠的多語言支持和令人印象深刻的性能。

雖然開發(fā) Python 項目似乎與定制的 Javascript 不兼容,但不要害怕!在下一部分中,我將介紹一種在 Python 程序中調(diào)用 Javascript 代碼的簡單技術(shù)。

不管怎樣,讓我們看看如何使用 Web Speech API 快速開發(fā)語音轉(zhuǎn)文本演示。您可以找到它的文檔(地址:https://wicg.github.io/speech-api/)。

語音識別的實現(xiàn)可以很容易地完成,如下所示。

var recognition = new webkitSpeechRecognition();
recognition.continuous = false;
recognition.interimResults = true;
recognition.lang = 'en';


recognition.start();

通過方法 webkitSpeechRecognition() 初始化識別對象后,需要定義一些有用的屬性。continuous 屬性表示您是否希望 SpeechRecognition 函數(shù)在語音輸入的一種模式處理成功完成后繼續(xù)工作。

我將其設(shè)置為 false,因為我希望語音聊天機器人能夠以穩(wěn)定的速度根據(jù)用戶語音輸入生成每個答案。

設(shè)置為 true 的 interimResults 屬性將在用戶語音期間生成一些中間結(jié)果,以便用戶可以看到從他們的語音輸入輸出的動態(tài)消息。

lang 屬性將設(shè)置請求識別的語言。請注意,如果它在代碼中是未設(shè)置,則默認(rèn)語言將來自 HTML 文檔根元素和關(guān)聯(lián)的層次結(jié)構(gòu),因此在其系統(tǒng)中使用不同語言設(shè)置的用戶可能會有不同的體驗。

識別對象有多個事件,我們使用 .onresult 回調(diào)來處理來自中間結(jié)果和最終結(jié)果的文本生成結(jié)果。

recognition.onresult = function (e) {
var value, value2 = "";
for (var i = e.resultIndex; i < e.results.length; ++i) {
if (e.results[i].isFinal) {
value += e.results[i][0].transcript;
rand = Math.random();


} else {
value2 += e.results[i][0].transcript;
}
}
}

5.引入Bokeh庫

從用戶界面的定義來看,我們想設(shè)計一個按鈕來啟動我們在上一節(jié)中已經(jīng)用 Javascript 實現(xiàn)的語音識別。

圖片

Streamlit 庫不支持自定義 JS 代碼,所以我們引入了 Bokeh。Bokeh 庫是另一個強大的 Python 數(shù)據(jù)可視化工具。可以支持我們的演示的最佳部分之一是嵌入自定義 Javascript 代碼,這意味著我們可以在 Bokeh 的按鈕小部件下運行我們的語音識別腳本。

為此,我們應(yīng)該安裝 Bokeh 包。為了兼容后面會提到的streamlit-bokeh-events庫,Bokeh的版本應(yīng)該是2.4.2:

!pip install bokeh==2.4.2

導(dǎo)入按鈕和 CustomJS:

from bokeh.models.widgets import Button
from bokeh.models import CustomJS

創(chuàng)建按鈕小部件:

spk_button = Button(label='SPEAK', button_type='success')

定義按鈕點擊事件:

spk_button.js_on_event("button_click", CustomJS(code="""
...js code...
"""))

定義了.js_on_event()方法來注冊spk_button的事件。

在這種情況下,我們注冊了“button_click”事件,該事件將在用戶單擊后觸發(fā)由 CustomJS() 方法嵌入的 JS 代碼塊…js 代碼…的執(zhí)行。

Streamlit_bokeh_event

speak 按鈕及其回調(diào)方法實現(xiàn)后,下一步是將 Bokeh 事件輸出(識別的文本)連接到其他功能塊,以便將提示文本發(fā)送到 ChatGPT API。

幸運的是,有一個名為“Streamlit Bokeh Events”的開源項目專為此目的而設(shè)計,它提供與 Bokeh 小部件的雙向通信。你可以在??這里??找到它的 GitHub 頁面。

這個庫的使用非常簡單。首先安裝包:

!pip install streamlit-bokeh-events

通過 streamlit_bokeh_events 方法創(chuàng)建結(jié)果對象。

result = streamlit_bokeh_events(
bokeh_plot = spk_button,
events="GET_TEXT,GET_ONREC,GET_INTRM",
key="listen",
refresh_on_update=False,
override_height=75,
debounce_time=0)

使用 bokeh_plot 屬性來注冊我們在上一節(jié)中創(chuàng)建的 spk_button。使用 events 屬性來標(biāo)記多個自定義的 HTML 文檔事件

  • GET_TEXT 接收最終識別文本
  • GET_INTRM 接收臨時識別文本
  • GET_ONREC 接收語音處理階段

我們可以使用 JS 函數(shù) document.dispatchEvent(new CustomEvent(…)) 來生成事件,例如 GET_TEXT 和 GET_INTRM 事件:

spk_button.js_on_event("button_click", CustomJS(code="""
var recognition = new webkitSpeechRecognition();
recognition.continuous = false;
recognition.interimResults = true;
recognition.lang = 'en';


var value, value2 = "";
for (var i = e.resultIndex; i < e.results.length; ++i) {
if (e.results[i].isFinal) {
value += e.results[i][0].transcript;
rand = Math.random();


} else {
value2 += e.results[i][0].transcript;
}
}
document.dispatchEvent(new CustomEvent("GET_TEXT", {detail: {t:value, s:rand}}));
document.dispatchEvent(new CustomEvent("GET_INTRM", {detail: value2}));


recognition.start();
}
"""))

并且,檢查事件 GET_INTRM 處理的 result.get() 方法,例如:

tr = st.empty()
if result:
if "GET_INTRM" in result:
if result.get("GET_INTRM") != '':
tr.text_area("**Your input**", result.get("GET_INTRM"))

這兩個代碼片段表明,當(dāng)用戶正在講話時,任何臨時識別文本都將顯示在 Streamlit text_area 小部件上:

6. 文字轉(zhuǎn)語音實現(xiàn)

提示請求完成,GPT-3.5模型通過ChatGPT API生成響應(yīng)后,我們通過Streamlit st.write()方法將響應(yīng)文本直接顯示在網(wǎng)頁上。

圖片

但是,我們需要將文本轉(zhuǎn)換為語音,這樣我們的 AI 語音 Chatbot 的雙向功能才能完全完成。

有一個名為“gTTS”的流行 Python 庫能夠完美地完成這項工作。在與谷歌翻譯的文本轉(zhuǎn)語音 API 接口后,它支持多種格式的語音數(shù)據(jù)輸出,包括 mp3 或 stdout。你可以在??這里??找到它的 GitHub 頁面。

只需幾行代碼即可完成轉(zhuǎn)換。首先安裝包:

!pip install gTTS

在這個演示中,我們不想將語音數(shù)據(jù)保存到文件中,所以我們可以調(diào)用 BytesIO() 來臨時存儲語音數(shù)據(jù):

sound = BytesIO()
tts = gTTS(output, lang='en', tld='com')
tts.write_to_fp(sound)

輸出的是要轉(zhuǎn)換的文本字符串,你可以根據(jù)自己的喜好,通過tld從不同的google域中選擇不同的語言by lang。例如,您可以設(shè)置 tld='co.uk' 以生成英式英語口音。

然后,通過 Streamlit 小部件創(chuàng)建一個像樣的音頻播放器:

st.audio(sound)

全語音聊天機器人

要整合上述所有模塊,我們應(yīng)該完成完整的功能:

  • 已完成與 ChatCompletion API 的交互,并在用戶和助手消息塊中定義了附加的歷史對話。使用 Streamlit 的 st.session_state 來存儲運行變量。
  • 考慮到 .onspeechstart()、.onsoundend() 和 .onerror() 等多個事件以及識別過程,在 SPEAK 按鈕的 CustomJS 中完成了事件生成。
  • 完成事件“GET_TEXT、GET_ONREC、GET_INTRM”的事件處理,以在網(wǎng)絡(luò)界面上顯示適當(dāng)?shù)男畔ⅲ⒐芾碛脩糁v話時的文本顯示和組裝。
  • 所有必要的 Streamit 小部件

請找到完整的演示代碼供您參考:

import streamlit as st
from bokeh.models.widgets import Button
from bokeh.models import CustomJS


from streamlit_bokeh_events import streamlit_bokeh_events


from gtts import gTTS
from io import BytesIO
import openai


openai.api_key = '{Your API Key}'


if 'prompts' not in st.session_state:
st.session_state['prompts'] = [{"role": "system", "content": "You are a helpful assistant. Answer as concisely as possible with a little humor expression."}]


def generate_response(prompt):


st.session_state['prompts'].append({"role": "user", "content":prompt})
completinotallow=openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages = st.session_state['prompts']
)


message=completion.choices[0].message.content
return message


sound = BytesIO()


placeholder = st.container()


placeholder.title("Yeyu's Voice ChatBot")
stt_button = Button(label='SPEAK', button_type='success', margin = (5, 5, 5, 5), width=200)




stt_button.js_on_event("button_click", CustomJS(code="""
var value = "";
var rand = 0;
var recognition = new webkitSpeechRecognition();
recognition.continuous = false;
recognition.interimResults = true;
recognition.lang = 'en';


document.dispatchEvent(new CustomEvent("GET_ONREC", {detail: 'start'}));


recognition.onspeechstart = function () {
document.dispatchEvent(new CustomEvent("GET_ONREC", {detail: 'running'}));
}
recognition.onsoundend = function () {
document.dispatchEvent(new CustomEvent("GET_ONREC", {detail: 'stop'}));
}
recognition.onresult = function (e) {
var value2 = "";
for (var i = e.resultIndex; i < e.results.length; ++i) {
if (e.results[i].isFinal) {
value += e.results[i][0].transcript;
rand = Math.random();


} else {
value2 += e.results[i][0].transcript;
}
}
document.dispatchEvent(new CustomEvent("GET_TEXT", {detail: {t:value, s:rand}}));
document.dispatchEvent(new CustomEvent("GET_INTRM", {detail: value2}));


}
recognition.onerror = function(e) {
document.dispatchEvent(new CustomEvent("GET_ONREC", {detail: 'stop'}));
}
recognition.start();
"""))


result = streamlit_bokeh_events(
bokeh_plot = stt_button,
events="GET_TEXT,GET_ONREC,GET_INTRM",
key="listen",
refresh_on_update=False,
override_height=75,
debounce_time=0)


tr = st.empty()


if 'input' not in st.session_state:
st.session_state['input'] = dict(text='', sessinotallow=0)


tr.text_area("**Your input**", value=st.session_state['input']['text'])


if result:
if "GET_TEXT" in result:
if result.get("GET_TEXT")["t"] != '' and result.get("GET_TEXT")["s"] != st.session_state['input']['session'] :
st.session_state['input']['text'] = result.get("GET_TEXT")["t"]
tr.text_area("**Your input**", value=st.session_state['input']['text'])
st.session_state['input']['session'] = result.get("GET_TEXT")["s"]


if "GET_INTRM" in result:
if result.get("GET_INTRM") != '':
tr.text_area("**Your input**", value=st.session_state['input']['text']+' '+result.get("GET_INTRM"))


if "GET_ONREC" in result:
if result.get("GET_ONREC") == 'start':
placeholder.image("recon.gif")
st.session_state['input']['text'] = ''
elif result.get("GET_ONREC") == 'running':
placeholder.image("recon.gif")
elif result.get("GET_ONREC") == 'stop':
placeholder.image("recon.jpg")
if st.session_state['input']['text'] != '':
input = st.session_state['input']['text']
output = generate_response(input)
st.write("**ChatBot:**")
st.write(output)
st.session_state['input']['text'] = ''


tts = gTTS(output, lang='en', tld='com')
tts.write_to_fp(sound)
st.audio(sound)


st.session_state['prompts'].append({"role": "user", "content":input})
st.session_state['prompts'].append({"role": "assistant", "content":output})

輸入后:

!python -m streamlit run demo_voice.py

您最終會在網(wǎng)絡(luò)瀏覽器上看到一個簡單但智能的語音聊天機器人。

請注意:不要忘記在彈出請求時允許網(wǎng)頁訪問您的麥克風(fēng)和揚聲器。

就是這樣,一個簡單聊天機器人就完成了。

最后,希望您能在本文中找到有用的東西,感謝您的閱讀!

責(zé)任編輯:華軒 來源: web前端開發(fā)
相關(guān)推薦

2023-01-30 21:34:35

人工智能機器人ChatGPT

2020-12-02 13:00:17

Recast.AI聊天機器人人工智能

2023-10-13 09:00:00

2022-08-04 07:03:41

AnswersInfobip無代碼

2021-11-30 10:56:43

ChatterBot機器人人工智能

2023-06-29 15:04:21

微軟ChatGPT

2021-05-24 15:29:24

人工智能機器人聊天

2021-10-28 22:46:13

Python機器人數(shù)據(jù)

2022-09-30 13:55:46

Python機器人

2022-07-05 06:42:01

聊天機器人人工智能

2023-02-15 14:33:26

2023-12-18 19:05:34

2023-02-09 07:34:52

ChatGPT機器人人工智障

2017-06-08 10:07:53

機器人銀行微軟

2020-02-26 17:39:18

Python機器人Word

2023-06-16 07:17:10

ChatGPT智能汽車

2023-05-31 13:28:45

2023-07-27 14:38:58

人工智能機器人開發(fā)

2023-02-13 11:42:39

2022-06-28 16:26:24

機器人人工智能聊天機器人
點贊
收藏

51CTO技術(shù)棧公眾號

国产一区二区三区四区五区在线| 亚洲国产精品999| 亚洲蜜桃在线| 99久久精品无免国产免费| 欧美福利一区| 亚洲人精品午夜在线观看| 在线观看国产一级片| 四虎影院观看视频在线观看| 99r国产精品| 国产日产欧美a一级在线| 欧美另类视频在线观看| 自拍欧美一区| 日韩一级完整毛片| 日韩在线xxx| 亚洲大胆人体大胆做受1| 久久久久久久久蜜桃| 亚洲综合小说区| 无码人妻久久一区二区三区| 伊人色**天天综合婷婷| 亚洲偷欧美偷国内偷| 久久久久久久久久久久国产精品| 8av国产精品爽爽ⅴa在线观看| 一区二区三区中文字幕精品精品| 欧美日韩视频在线一区二区观看视频| 99精品在线视频观看| 日韩高清中文字幕一区| 国内自拍欧美激情| 国产精品 欧美激情| 精品久久网站| 日韩av在线播放资源| 四虎1515hh.com| 国产综合色在线观看| 香蕉加勒比综合久久| 强伦女教师2:伦理在线观看| 黄色av免费在线观看| 99在线精品一区二区三区| 99精品99久久久久久宅男| 亚洲无码久久久久久久| 久久综合导航| 日本韩国在线不卡| 国产网友自拍视频| 国内精品久久久久久久97牛牛| 深夜福利一区二区| 永久免费毛片在线观看| 亚洲人成精品久久久 | 久久99久久久久久| 大片免费在线看视频| 国产精品对白交换视频| 亚洲美女网站18| eeuss影院在线播放| 久久精品在线免费观看| 久久久国产精品一区二区三区| 人妻无码中文字幕| 成人午夜视频免费看| 成人免费视频视频在| 成人激情四射网| 国产乱码一区二区三区| 亚洲精品日产aⅴ| 国产区精品在线| 国产精品一区二区久激情瑜伽 | 波多野结衣欧美| 日韩精品一区二区三区四区 | 亚洲网站在线免费观看| 久久国产综合精品| 91九色视频导航| 精品国产九九九| 国产aⅴ综合色| 国产精品亚洲综合| 三级在线电影| 国产精品三级久久久久三级| 在线天堂一区av电影| 快射av在线播放一区| 亚洲男同1069视频| 夜夜添无码一区二区三区| 狼人综合视频| 欧美在线free| 麻豆传媒在线看| 啪啪国产精品| 色悠悠久久久久| 久久成人在线观看| 午夜在线视频观看日韩17c| 国产不卡av在线| 91精品国产乱码久久久久| 国产精品亚洲视频| 久久精品五月婷婷| 在线观看免费高清完整| 一区二区在线观看视频 | 狠狠色丁香久久婷婷综合_中| 91夜夜未满十八勿入爽爽影院| 亚洲欧美另类视频| 国产午夜亚洲精品理论片色戒| 亚洲午夜精品久久久中文影院av| 性欧美videoshd高清| 欧美日韩激情小视频| 99re精彩视频| 嫩草国产精品入口| 日韩中文字幕在线看| 日韩久久精品视频| 久久成人麻豆午夜电影| 精品乱子伦一区二区三区| 日本美女在线中文版| 亚洲国产精品尤物yw在线观看| 日韩精品一区二区三区不卡 | 精品久久一二三区| 国产一区二区三区四区五区六区| 中文字幕免费一区二区| 日韩av日韩在线观看| 国产xxxx在线观看| 日本一区二区三级电影在线观看| 妞干网视频在线观看| 91大神在线观看线路一区| 亚洲国产欧美日韩精品| 992在线观看| 午夜在线播放视频欧美| 成人激情直播| 久久日韩视频| 欧美在线一二三| 成年人的黄色片| 亚洲破处大片| 国产精品永久在线| 久久免费看视频| 亚洲成人激情av| 青娱乐国产精品视频| 日韩国产在线| 欧洲亚洲免费视频| 蜜桃久久一区二区三区| 亚洲色图一区二区| 国产原创精品在线| 国产区精品区| 欧美一二三视频| 理论片中文字幕| 一区二区三区中文免费| 成人av毛片在线观看| 日韩一区欧美| 国产精品天天狠天天看| 国产在线播放av| 一本大道久久a久久精品综合| 亚洲av人人澡人人爽人人夜夜| 亚洲综合色站| 亚洲va久久久噜噜噜| 女女色综合影院| 91福利区一区二区三区| 妖精视频一区二区| 一本久道久久综合狠狠爱| 成人蜜桃视频| a级片免费在线观看| 欧美α欧美αv大片| 福利所第一导航| 国产精品一区专区| 永久免费网站视频在线观看| 91久久青草| 欧美成人在线免费| 亚洲成人精品女人久久久| 亚洲综合激情另类小说区| av影片在线播放| 欧美午夜不卡| 国产麻豆日韩| 自拍视频在线看| 国产午夜精品视频| 在线观看中文字幕2021| 一区在线播放视频| 最好看的中文字幕| 亚洲激情一区| 欧美日韩精品免费观看视一区二区| www.日韩| 中文日韩在线观看| 国产毛片久久久久| 亚洲一级在线观看| 国产福利在线观看视频| 日本欧美在线观看| 欧美性受xxxx黑人猛交88| 一区二区三区四区高清视频 | 日韩亚洲在线观看| 精品乱子伦一区二区| 午夜影院久久久| 免费人成又黄又爽又色| 精品在线观看视频| 加勒比成人在线| 国产91精品对白在线播放| 国产美女91呻吟求| 欧美激情成人动漫| 亚洲天堂男人的天堂| 国产一区二区女内射| 亚洲一区二区三区四区在线免费观看| 久久人人爽人人爽人人片| 蜜臀91精品一区二区三区| 992tv快乐视频| 亚州av日韩av| 91精品中文在线| 中文字幕成在线观看| 日韩有码在线观看| 亚洲aⅴ乱码精品成人区| 欧美三级韩国三级日本一级| 久久久久久久久久综合| 国产欧美精品日韩区二区麻豆天美| www.成人黄色| 模特精品在线| 国产乱人伦精品一区二区三区| 亚洲资源网站| 97视频中文字幕| 日韩不卡在线| 97高清免费视频| 麻豆影院在线| 亚洲美女自拍视频| 丰满人妻一区二区三区四区53 | 午夜视频你懂的| 亚洲毛片一区| 麻豆映画在线观看| 成人动漫免费在线观看| 国产欧美日韩一区| 国产欧美视频在线| 国产精品igao视频| 国产传媒在线| 色综合天天狠天天透天天伊人| 国产69精品久久app免费版| 欧美精品一区二区三区视频| 91丨九色丨蝌蚪丨对白| 色欲综合视频天天天| 精品在线视频免费| 亚洲黄色性网站| 婷婷国产成人精品视频| 久久久久久一级片| 污污污www精品国产网站| 激情成人综合网| 午夜两性免费视频| 视频精品一区二区| 男人天堂网视频| 亚洲国产黄色| 男人添女荫道口女人有什么感觉| 99久久99久久精品国产片桃花 | 一本久久综合| 福利在线一区二区| 亚洲欧美综合国产精品一区| 亚洲一区精彩视频| 日本欧美视频| 日韩欧美一区二区视频在线播放 | 久久久国产免费| 日韩欧美国产骚| 亚洲 欧美 日韩 综合| 亚洲国产精品久久人人爱蜜臀| 欧美成欧美va| 亚洲激情男女视频| 欧美黄色一级网站| 伊人色综合久久天天| 丰满少妇高潮久久三区| 亚洲另类色综合网站| 亚洲色婷婷一区二区三区| 亚洲欧美一区二区三区久本道91| 激情高潮到大叫狂喷水| 中文字幕中文字幕一区| 久久精品亚洲a| 亚洲日本青草视频在线怡红院| 手机在线中文字幕| 综合久久国产九一剧情麻豆| 日本二区三区视频| 亚洲精品国产精华液| 久草视频中文在线| 婷婷一区二区三区| 国产成人无码一区二区在线播放| 色婷婷国产精品综合在线观看| 无码aⅴ精品一区二区三区| 日本道免费精品一区二区三区| 青青艹在线观看| 欧美乱熟臀69xxxxxx| 精品人妻伦一二三区久久| 亚洲精品一区二区三区在线观看| 婷婷综合激情网| 亚洲天堂视频在线观看| 免费av毛片在线看| 欧美精品xxx| 周于希免费高清在线观看| 国产精品女主播| 日本精品国产| 久久久一本精品99久久精品66| 国内精品久久久久久久久电影网 | 91久久黄色| 欧美成人黑人猛交| 韩国av一区二区三区| 大桥未久恸哭の女教师| 国产性做久久久久久| 97精品97| 6—12呦国产精品| 欧美日韩免费一区二区三区| 在线黄色av网站| 日韩精品一区二区三区视频| 无码国产精品一区二区色情男同| 亚洲人午夜精品| av毛片在线| 欧美在线日韩在线| 国产高清精品二区| 女女同性女同一区二区三区91| 久久综合成人| 日韩a∨精品日韩在线观看| 免费看日韩精品| 国产大学生视频| 中文字幕亚洲欧美在线不卡| 国产在线成人精品午夜| 欧美亚洲一区二区在线| 黑人精品一区二区| 日韩中文字幕在线播放| 成人免费看黄| 91嫩草视频在线观看| 精品久久久中文字幕| 又大又硬又爽免费视频| 蜜臀精品一区二区三区在线观看| 国产在线不卡av| 亚洲欧洲综合另类| 久久午夜鲁丝片| 精品视频在线播放免| 性国产高清在线观看| 国产精品一区专区欧美日韩| 日韩精品亚洲aⅴ在线影院| 18视频在线观看娇喘| 男男成人高潮片免费网站| 男人的天堂影院| 亚洲乱码国产乱码精品精可以看| 日韩乱码一区二区三区| 日韩精品福利网站| 国产美女情趣调教h一区二区| 国产日韩在线观看av| 精品日韩在线| 久久久久久久久久福利| 91在线高清观看| 久久久久久久99| 精品人在线二区三区| 黄色成人在线| 成人黄色片在线| 日韩欧美字幕| 亚州精品一二三区| 国产色爱av资源综合区| 国产精品100| 日韩av在线免费播放| 96av在线| 精品乱码一区二区三区| 亚洲黄页一区| 亚洲av无码一区二区三区观看| 亚洲国产精品精华液网站| 亚洲AV无码一区二区三区少妇| 久久九九国产精品怡红院| 久久亚洲人体| 伊人久久av导航| 激情综合网天天干| tube国产麻豆| 日韩精品一区二区三区在线播放 | 久久综合色视频| 北岛玲一区二区三区四区| 亚洲精品视频在线观看免费视频| 欧美精品一区二区三区高清aⅴ | 一道本在线观看| 日本韩国视频一区二区| 国产成人天天5g影院在线观看| 国产成人久久精品| 青青一区二区三区| 色一情一区二区三区| 综合亚洲深深色噜噜狠狠网站| 国产一区二区自拍视频| 久久av红桃一区二区小说| 一区二区三区视频免费视频观看网站| 成年女人18级毛片毛片免费| 99r国产精品| 中文字幕黄色av| 免费av在线一区| 极品尤物一区| 日本黄色三级大片| 亚洲婷婷在线视频| 国产成人自拍一区| 情事1991在线| 欧美gayvideo| 在线播放第一页| 色综合欧美在线视频区| 香蕉视频网站在线观看| 1卡2卡3卡精品视频| 在线视频观看日韩| 少妇久久久久久久久久| 欧美日韩国产片| www中文字幕在线观看| 日本一区二区不卡高清更新| 久久精品国产精品亚洲精品| 欧美精品久久久久性色| 亚洲欧美制服中文字幕| 日本一区二区中文字幕| 成年人网站国产| 国产欧美精品国产国产专区 | 亚洲女在线观看| 91精品国产一区二区在线观看 | 久草这里只有精品视频| 精品少妇久久久| 国产一区二区动漫| 在线精品自拍| 三级a在线观看| 亚洲亚洲人成综合网络| 成人在线播放视频| 国产传媒欧美日韩| 免费人成在线不卡| 亚洲欧美在线观看视频| 色一区av在线| 亚洲丝袜美腿一区| 91精品国产高清91久久久久久 | 国产一区红桃视频| 在线综合视频|