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

音頻處理問題難?快使用Tensorflow構建一個語音識別模型

譯文
開發 開發工具
語音識別在許多行業都是一個復雜的問題。了解有關處理音頻數據以及如何對聲音樣本進行分類的一些基礎知識對豐富個人能力是件很有益的事。

【51CTO.com快譯】本文我們將通過一個使用Tensorflow對一些聲音剪輯進行分類的例子,幫助你了解足夠的基礎知識,從而能夠構建自己的語音識別模型。另外,你也可以通過進一步的學習,將這些概念應用到更大、更復雜的音頻文件中。

本案例的完整代碼可以在??GitHub??上獲取。

?[[386747]]?

獲取數據

數據收集是數據科學中的難題之一。雖然有很多可用的數據,但并不是所有的數據都容易用于機器學習問題。因此必須確保數據是干凈的、有標簽的和完整的。

為了實現本次案例,我們將使用Google發布的一些音頻文件,可以在??Github??上獲取。

首先,我們將創建一個新的Conducto管道。在這里,您可以構建,訓練和測試模型,并與其他感興趣的人共享鏈接:

###
# Main Pipeline
###
def main() -> co.Serial:
path = "/conducto/data/pipeline"
root = co.Serial(image = get_image())

# Get data from keras for testing and training
root["Get Data"] = co.Exec(run_whole_thing, f"{path}/raw")

return root

然后,開始編寫 run_whole_thing 功能:

def run_whole_thing(out_dir):
os.makedirs(out_dir, exist_ok=True)
# Set seed for experiment reproducibility
seed = 55
tf.random.set_seed(seed)
np.random.seed(seed)
data_dir = pathlib.Path("data/mini_speech_commands")

接下來,設置目錄以保存音頻文件:

if not data_dir.exists():
# Get the files from external source and put them in an accessible directory
tf.keras.utils.get_file(
'mini_speech_commands.zip',
origin="http://storage.googleapis.com/download.tensorflow.org/data/mini_speech_commands.zip",
extract=True)

預處理數據

現在將數據保存在正確的目錄中,可以將其拆分為訓練、測試和驗證數據集。

首先,我們需要編寫一些函數來幫助預處理數據,以使其可以在我們的模型中起作用。

我們需要算法能夠理解的數據格式。我們將使用卷積神經網絡,所以數據需要轉換成圖像。

第一個函數將把二進制音頻文件轉換成一個張量:

# Convert the binary audio file to a tensor
def decode_audio(audio_binary):
audio, _ = tf.audio.decode_wav(audio_binary)
return tf.squeeze(audio, axis=-1)

由于我們有一個具有原始數據的張量,所以我們需要得到匹配它們的標簽。這就是下面的函數通過從文件路徑獲取音頻文件的標簽功能:

# Get the label (yes, no, up, down, etc) for an audio file.
def get_label(file_path):
parts = tf.strings.split(file_path, os.path.sep)
return parts[-2]

接下來,我們需要將音頻文件與正確的標簽相關聯。執行此操作并返回一個可與 Tensorflow配合使用的元組:

# Create a tuple that has the labeled audio files
def get_waveform_and_label(file_path):
label = get_label(file_path)
audio_binary = tf.io.read_file(file_path)
waveform = decode_audio(audio_binary)
return waveform, label

前面我們簡要提到了使用卷積神經網絡(CNN)算法。這是我們處理語音識別模型的方法之一。通常CNN在圖像數據上工作得很好,有助于減少預處理時間。

我們要利用這一點,把音頻文件轉換成頻譜圖。頻譜圖是頻率頻譜的圖像。如果查看一個音頻文件,你會發現它只是頻率數據。因此,我們要寫一個將音頻數據轉換成圖像的函數:

# Convert audio files to images
def get_spectrogram(waveform):
# Padding for files with less than 16000 samples
zero_padding = tf.zeros([16000] - tf.shape(waveform), dtype=tf.float32)
# Concatenate audio with padding so that all audio clips will be of the same length
waveform = tf.cast(waveform, tf.float32)
equal_length = tf.concat([waveform, zero_padding], 0)
spectrogram = tf.signal.stft(
equal_length, frame_length=255, frame_step=128)
spectrogram = tf.abs(spectrogram)

return spectrogram

現在我們已經將數據格式化為圖像,我們需要將正確的標簽應用于這些圖像。這與我們制作原始音頻文件的做法類似:

# Label the images created from the audio files and return a tuple
def get_spectrogram_and_label_id(audio, label):
spectrogram = get_spectrogram(audio)
spectrogram = tf.expand_dims(spectrogram, -1)
label_id = tf.argmax(label == commands)
return spectrogram, label_id

我們需要的最后一個 helper 函數將處理傳遞給它的任何音頻文件集的所有上述操作:

# Preprocess any audio files
def preprocess_dataset(files, autotune, commands):
# Creates the dataset
files_ds = tf.data.Dataset.from_tensor_slices(files)

# Matches audio files with correct labels
output_ds = files_ds.map(get_waveform_and_label,
num_parallel_calls=autotune)
# Matches audio file images to the correct labels
output_dsoutput_dsoutput_ds = output_ds.map(
get_spectrogram_and_label_id, num_parallel_calls=autotune)
return output_ds

當已經有了所有這些輔助函數,我們就可以分割數據了。

將數據拆分為數據集

將音頻文件轉換為圖像有助于使用CNN更容易處理數據,這就是我們編寫所有這些幫助函數的原因。我們將做一些事情來簡化數據的分割。

首先,我們將獲得所有音頻文件的潛在命令列表,我們將在代碼的其他地方使用這些命令:

# Get all of the commands for the audio files
commands = np.array(tf.io.gfile.listdir(str(data_dir)))
commandscommandscommands = commands[commands != 'README.md']

然后我們將得到數據目錄中所有文件的列表,并對其進行混洗,以便為每個需要的數據集分配隨機值:

# Get a list of all the files in the directory
filenames = tf.io.gfile.glob(str(data_dir) + '/*/*')

# Shuffle the file names so that random bunches can be used as the training, testing, and validation sets
filenames = tf.random.shuffle(filenames)

# Create the list of files for training data
train_files = filenames[:6400]

# Create the list of files for validation data
validation_files = filenames[6400: 6400 + 800]

# Create the list of files for test data
test_files = filenames[-800:]

現在,我們已經清晰地將培訓、驗證和測試文件分開,這樣我們就可以繼續對這些文件進行預處理,使它們為構建和測試模型做好準備。這里使用autotune來在運行時動態調整參數的值:

autotune = tf.data.AUTOTUNE

第一個示例只是為了展示預處理的工作原理,它給了一些我們需要的spectrogram_ds值:

# Get the converted audio files for training the model
files_ds = tf.data.Dataset.from_tensor_slices(train_files)
waveform_ds = files_ds.map(
get_waveform_and_label, num_parallel_calls=autotune)
spectrogram_ds = waveform_ds.map(
get_spectrogram_and_label_id, num_parallel_calls=autotune)

既然已經了解了預處理的步驟過程,我們可以繼續使用helper函數來處理所有數據集:

# Preprocess the training, test, and validation datasets
train_ds = preprocess_dataset(train_files, autotune, commands)
validation_ds = preprocess_dataset(
validation_files, autotune, commands)
test_ds = preprocess_dataset(test_files, autotune, commands)

我們要設置一些訓練示例,這些訓練示例在每個時期的迭代中運行,因此我們將設置批處理大?。?/p>

# Batch datasets for training and validation
batch_size = 64
train_dstrain_dstrain_ds = train_ds.batch(batch_size)
validation_dsvalidation_dsvalidation_ds = validation_ds.batch(batch_size)

最后,我們可以利用緩存來減少訓練模型時的延遲:

# Reduce latency while training
train_dstrain_dstrain_ds = train_ds.cache().prefetch(autotune)
validation_dsvalidation_dsvalidation_ds = validation_ds.cache().prefetch(autotune)

最終,我們的數據集采用了可以訓練模型的形式。

建立模型

由于數據集已明確定義,所以我們可以繼續構建模型。我們將使用CNN創建模型,因此我們需要獲取數據的形狀以獲取適用于我們圖層的正確形狀,然后我們繼續按順序構建模型:

# Build model
for spectrogram, _ in spectrogram_ds.take(1):
input_shape = spectrogram.shape

num_labels = len(commands)

norm_layer = preprocessing.Normalization()
norm_layer.adapt(spectrogram_ds.map(lambda x, _: x))

model = models.Sequential([
layers.Input(shape=input_shape),
preprocessing.Resizing(32, 32),
norm_layer,
layers.Conv2D(32, 3, activation='relu'),
layers.Conv2D(64, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Dropout(0.25),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dropout(0.5),
layers.Dense(num_labels),
])

model.summary()

我們在模型上做了一些配置,以便給我們最好的準確性:

# Configure built model with losses and metrics
model.compile(
optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.SparseCategoricalCrossentropy(
from_logits=True),
metrics=['accuracy'],
)

模型建立好了,現在剩下的就是訓練它了。

訓練模型

在所有的工作都對數據進行預處理和建立模型之后,訓練就相對簡單了。我們確定要使用訓練和驗證數據集運行多少個周期:

# Finally train the model and return info about each epoch
EPOCHS = 10
model.fit(
train_ds,
validation_data=validation_ds,
epochs=EPOCHS,
callbacks=tf.keras.callbacks.EarlyStopping(verbose=1, patience=2),
)

這樣這個模型就已經訓練好了,現在需要對它進行測試。

測試模型

現在我們有了一個準確率約為83%的模型,是時候測試它在新數據上的表現了。所以我們使用測試數據集并將音頻文件從標簽中分離出來:

# Test the model
test_audio = []
test_labels = []

for audio, label in test_ds:
test_audio.append(audio.numpy())
test_labels.append(label.numpy())

test_audio = np.array(test_audio)
test_labels = np.array(test_labels)

然后我們獲取音頻數據并在我們的模型中使用它,看看它是否預測了正確的標簽:

# See how accurate the model is when making predictions on the test dataset
y_pred = np.argmax(model.predict(test_audio), axis=1)
y_true = test_labels

test_acc = sum(y_pred == y_true) / len(y_true)

print(f'Test set accuracy: {test_acc:.0%}')

完成管道

只需要編寫一小段代碼就可以完成您的管道并使其與任何人共享。這定義了將在Conducto管道中使用的圖像,并處理文件執行:

###
# Pipeline Helper functions
###
def get_image():
return co.Image(
"python:3.8-slim",
copy_dir=".",
reqs_py=["conducto", "tensorflow", "keras"],
)

if __name__ == "__main__":
co.main(default=main)

現在,你可以在終端中運行python pipeline.py——它應該會啟動一個到新Conducto管道的鏈接。

結論

這是解決音頻處理問題的方法之一,但是根據要分析的數據,它可能要復雜得多。如果將其構建在管道中,可以很輕松地與同事共享并在遇到錯誤時獲得幫助或反饋。

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】


責任編輯:黃顯東 來源: hackernoon.com
相關推薦

2025-04-01 09:31:34

PyTorch自動語音識別ASR系統

2018-08-27 17:05:48

tensorflow神經網絡圖像處理

2012-07-25 13:23:32

ibmdw

2010-03-01 14:40:00

Python RSS處

2018-08-30 09:36:10

編程語言Python機器學習

2021-11-02 09:40:50

TensorFlow機器學習人工智能

2010-02-23 17:23:26

Python異常處理

2024-05-28 08:11:44

SpringTensorFlow訓練

2023-11-28 14:22:54

Python音頻

2014-02-19 09:51:29

iOS開發時間處理

2022-09-19 16:38:59

數據產品SaaSSnowflake

2023-01-30 17:14:40

人工智能語音識別

2025-01-11 23:14:52

2025-02-26 07:00:00

Go 語言Ollama 模型dubbogo

2024-06-13 08:36:11

2010-05-17 14:59:05

MySQL事務處理

2024-08-15 14:48:57

2016-11-14 10:06:04

大數據max位圖

2017-03-20 10:14:03

語音識別匹配算法模型

2023-09-05 09:00:00

工具Python抄襲檢測系統
點贊
收藏

51CTO技術棧公眾號

亚洲精品成人天堂一二三| 精品在线视频免费| 国产又粗又猛又黄| 成人亚洲综合| 亚洲视频中文| 欧美性色综合网| 精品国产乱码久久久久久久软件 | 久久国产麻豆精品| 欧美一区二区网站| 亚洲a∨一区二区三区| 国产成人亚洲精品自产在线 | 欧美日韩国产欧美日美国产精品| 国产区欧美区日韩区| 一级性生活免费视频| 成人做爰视频www网站小优视频| 国产白丝网站精品污在线入口| 中文字幕欧美精品日韩中文字幕| 欧美精品一区免费| 日韩在线一区二区三区四区| 欧美1区3d| 欧美一区二区三区视频免费播放 | 久久av最新网址| 亚洲第一免费播放区| 欧美黄色免费网址| 精品女同一区二区三区| 婷婷综合亚洲| 欧美一区二区三区白人| 黄www在线观看| 亚洲人成色777777精品音频| 99riav1国产精品视频| 亚洲精品mp4| 天天夜碰日日摸日日澡性色av| 好男人www在线视频| 亚洲国产高清一区二区三区| 亚洲高清久久网| 亚洲午夜激情影院| 亚洲区欧洲区| 欧美1区2区3区| 在线观看中文字幕亚洲| 岳毛多又紧做起爽| 超免费在线视频| 26uuu精品一区二区在线观看| 91大神在线播放精品| 人妻大战黑人白浆狂泄| 国产综合av| 久久精品视频免费观看| 热re91久久精品国99热蜜臀| 人妻少妇无码精品视频区| 成人福利片在线| 日韩欧美成人免费视频| 亚洲午夜精品久久久中文影院av| 国产免费一区二区三区免费视频| 亚洲视频中文| 欧美精品日韩www.p站| 国产伦精品一区三区精东| 电影一区二区三| 国产精品美女久久久久aⅴ| 亚洲一区二区三区777| 麻豆changesxxx国产| 日韩有码中文字幕在线| 欧美日韩和欧美的一区二区| 日本爱爱免费视频| 在线你懂的视频| 91免费观看视频在线| 九九热久久66| 国产模特av私拍大尺度| 激情综合网av| 欧美做受高潮电影o| 国产成人无码精品亚洲| 香蕉久久夜色精品国产| www.色综合| 男人网站在线观看| 国产精品传媒麻豆hd| 欧美色图在线观看| 国产精品无码人妻一区二区在线| 国产蜜臀在线| 婷婷成人综合网| 中文字幕中文字幕99 | 免费高清在线一区| 色综合久久悠悠| 丁香激情五月少妇| 国产精品一线| 777午夜精品免费视频| 国产一区二区三区精彩视频 | 欧美扣逼视频| 国产一区二区三区久久久| 欧美最猛性xxxxx免费| 免费视频网站在线观看入口| 极品av少妇一区二区| 色青青草原桃花久久综合| 波多野结衣影院| 国产中文欧美日韩在线| 欧美天堂一区二区三区| 亚洲天堂伊人网| www.成人网| 91精品啪在线观看国产60岁| 中国特级黄色片| 99久久999| 日本韩国一区二区三区视频| 18禁裸男晨勃露j毛免费观看 | xxxx性欧美| 久久在线视频精品| 91日韩在线| 亚洲最新中文字幕| 黄色a级片在线观看| 三上亚洲一区二区| 亚洲午夜国产成人av电影男同| 三级视频网站在线观看| 精品久久成人| 亚洲欧洲xxxx| 亚洲最大的黄色网| **日韩最新| 欧美精品一区二区三区很污很色的| 午夜一区二区视频| 欧美大胆视频| 亚洲精品久久久久久久久久久久| 69视频在线观看免费| 欧美日本一区| 久久免费视频在线观看| 欧美黑吊大战白妞| 欧美精品综合| 国产精品三级美女白浆呻吟| www.五月婷婷.com| 高清久久久久久| 一级特黄录像免费播放全99| 色偷偷偷在线视频播放| 日本道在线观看一区二区| 性一交一黄一片| av不卡一区二区| 日韩在线高清视频| 手机av免费观看| 久久精品国产一区二区三区免费看| 国产偷久久久精品专区| 国产精品va在线观看视色 | 日本公妇乱淫免费视频一区三区| 免费在线一级视频| 亚洲专区一二三| 日韩av新片网| 中文字幕21页在线看| 色哟哟在线观看一区二区三区| 久久综合久久色| 日韩福利影视| 欧美一区二区视频网站| 在线观看免费黄色网址| 91精品一区二区三区综合在线爱| 欧美猛交ⅹxxx乱大交视频| 欧美激情一区二区三区免费观看 | 亚洲国产三级在线| 妞干网视频在线观看| 狠狠躁少妇一区二区三区| 色综合久久综合网97色综合| 亚洲高清无码久久| 亚洲午夜伦理| 国产精品二区二区三区| 午夜小视频免费| 亚洲国产欧美日韩另类综合| 无码人妻一区二区三区精品视频| 亚洲视频分类| 精品国产一区二区三区久久久| 伊人中文字幕在线观看| 激情都市一区二区| 亚洲午夜精品久久久久久浪潮| 久久国内精品| 日韩av网站在线| 在线免费看av网站| 性欧美videos另类喷潮| 久久精品午夜一区二区福利| 忘忧草在线日韩www影院| 亚洲精品v天堂中文字幕| 欧美激情黑白配| 国产精品主播直播| 欧洲一区二区在线观看| 欧美最新精品| 神马久久久久久| 国产乱色精品成人免费视频| 一区av在线播放| 欧美大片免费播放器| 老司机午夜精品视频| 国产高清一区视频| 国产精选在线| 一区二区三区在线播放欧美| 国产又粗又猛又黄又爽无遮挡| 亚洲综合一二区| 国产精品边吃奶边做爽| 美女脱光内衣内裤视频久久网站 | 久热国产在线| 欧美日韩精品在线| 佐山爱在线视频| 日韩在线二区| 99理论电影网| 国产视频中文字幕在线观看| 精品久久久久一区二区国产| 伊人久久久久久久久久久久久久| 国产a区久久久| 国产成人无码一二三区视频| 欧美黄色影院| 国产精品入口尤物| eeuss鲁一区二区三区| 日韩一区二区三区免费看| 青青青手机在线视频| 久久天堂精品| 性欧美18一19内谢| 欧美成a人片免费观看久久五月天| 成人444kkkk在线观看| 中文字幕 自拍偷拍| 久久九九影视网| 国产人妻精品久久久久野外| 久久一本综合频道| 久操手机在线视频| 久久日文中文字幕乱码| 精品免费日产一区一区三区免费| 亚洲欧美专区| 国产成人av在线| 深夜福利视频在线免费观看| 亚洲另类一区二区| 99精品视频免费版的特色功能| 国产精品日韩精品欧美精品| 狠狠色狠狠色综合人人| 亚洲福利影视| 国产精品成人国产乱一区| 国产三级在线免费观看| 日本乱人伦aⅴ精品| 久久一级黄色片| 最近日韩中文字幕| 午夜福利三级理论电影| 久久精品国产网站| www.欧美日本| 91综合在线| 欧美日韩一区在线观看视频| 香蕉成人影院| 欧美一级片一区| wwwxxx在线观看| 欧美精品色综合| 亚洲熟女www一区二区三区| 中文字幕欧美三区| 岛国av免费在线| 日本在线不卡视频| 日韩人妻精品一区二区三区| 一区二区三区四区高清视频| 4438全国成人免费| 91制片在线观看| 欧美激情久久久| 精品视频二区| 欧美丰满少妇xxxbbb| 黄色av一区二区| 欧美性黄网官网| 亚洲永久精品在线观看| 婷婷开心久久网| 国产成人亚洲欧洲在线| 亚洲18女电影在线观看| 亚洲图片另类小说| 久久久久88色偷偷免费| 熟女少妇一区二区三区| 久久综合久色欧美综合狠狠| 中文字幕色网站| 狠狠狠色丁香婷婷综合激情 | 亚洲综合一二三| 亚洲高清免费视频| 久久夜色精品亚洲| 精品日韩美女的视频高清| 西西44rtwww国产精品| 国产精品色婷婷久久58| 超碰人人干人人| 波多野结衣91| 在线免费观看av网| 欧美一级网站| 福利在线一区二区三区| 欧美aaa在线| 激情文学亚洲色图| 国产成人久久精品77777最新版本| 日韩a在线播放| 亚洲欧美日韩综合国产aⅴ| av无码精品一区二区三区| 日本人妖一区二区| 992kp免费看片| av中文字幕亚洲| 国产精品探花在线播放| 国产乱国产乱300精品| 在线xxxxx| 久久精品网站免费观看| 三级黄色在线观看| 亚洲综合激情网| 日韩欧美成人一区二区三区| 欧美性高清videossexo| 精品人妻无码一区二区色欲产成人| 精品国产伦一区二区三区观看方式 | japanese中文字幕| 亚洲欧美精品午睡沙发| 亚洲激情视频一区| 亚洲你懂的在线视频| 国产午夜精品无码| 在线观看av不卡| 亚洲黄色小说图片| 欧美男男青年gay1069videost | 福利一区二区三区视频在线观看| 成人精品视频99在线观看免费| 日韩欧美一区二区三区在线观看 | 91禁在线观看| 亚洲国产免费av| 免费a级人成a大片在线观看| 在线看欧美日韩| 中文字幕中文字幕在线十八区| 国产69久久精品成人看| 国产精品一区二区美女视频免费看 | 天堂综合网久久| 中文字幕一区二区三区有限公司 | 97免费高清电视剧观看| 巨大黑人极品videos精品| 亚洲一区二区在线播放| 国产成人一区| 日本不卡二区| 激情久久五月| 亚洲18在线看污www麻豆| 96av麻豆蜜桃一区二区| 亚洲一区二区乱码| 亚洲特级片在线| 久久久久黄色片| 欧美探花视频资源| 青青草视频在线观看| 欧美激情2020午夜免费观看| 久久精品资源| 清纯唯美一区二区三区| 99国内精品| wwwxxx色| 一区二区在线电影| 亚洲在线免费观看视频| 红桃视频成人在线观看| 成人在线观看高清| 在线视频国内自拍亚洲视频| 亚洲精品中文字幕成人片 | 久久久久久久久久一级| 亚洲国产精品成人精品| 免费黄网在线观看| 日韩美女视频免费看| 成人1区2区| 免费av在线一区二区| 精品一区二区三| 精品无码一区二区三区在线| 国产一区二区成人久久免费影院 | 欧美热在线视频精品999| 日本一区二区三区在线视频| 日韩一区二区久久| zjzjzjzjzj亚洲女人| 亚洲视频综合在线| 国产一区二区在线视频聊天| 一个色综合导航| av免费在线一区| 日韩精品极品视频在线观看免费| 成人在线亚洲| 久久艹国产精品| 国产一区在线精品| 男女黄床上色视频| 欧美日韩亚洲一区二| 天堂在线视频观看| 中文国产亚洲喷潮| 欧美色网在线| 欧美中日韩免费视频| 亚洲综合丁香| 日本一卡二卡在线| 亚洲大型综合色站| 日韩有码第一页| 国语自产在线不卡| 日韩最新在线| 欧美日韩亚洲第一| 97久久精品人人澡人人爽| 日本一级淫片免费放| 日韩精品中文字幕久久臀| 蜜桃免费在线| 久久久噜噜噜久久中文字免| 精品素人av| 亚洲精品永久www嫩草| 亚洲国产专区校园欧美| 亚洲美女高潮久久久| 亚洲h在线观看| 久草福利在线视频| 国产精品日韩在线| 久久久久国产精品| 熟女人妻一区二区三区免费看| 五月天婷婷综合| 欧美孕妇孕交| 国产精品福利片| 99久久99热这里只有精品| 国产精品天天av精麻传媒| 中文字幕一区二区5566日韩| 久久久精品人妻一区二区三区四 | 最近2019年好看中文字幕视频| 中文字幕日本一区| 免费极品av一视觉盛宴| 91蜜桃传媒精品久久久一区二区| 午夜精品久久久久久久蜜桃| 欧美成人在线网站| 欧美影院天天5g天天爽| 色噜噜狠狠一区二区| av一区二区久久| 国产精品99精品无码视| 自拍偷拍亚洲在线| 亚洲成人五区| 男人搞女人网站| 亚洲另类色综合网站| 成黄免费在线|