91精品久久人人妻人人爽人人,一本a道久遛,中文字幕在线精品视频入口一区,无码伊人久久大杳蕉中文无码

幫助與文檔 > 產(chǎn)品文檔 > 智能語音服務(wù) > Android_SDK文檔 > 實(shí)時語音識別
實(shí)時語音識別

實(shí)時語音識別 Android SDK簡介

概述

(1) 概念解釋

實(shí)時語音識別:可實(shí)現(xiàn)對連續(xù)音頻流的實(shí)時識別,轉(zhuǎn)換成文本信息并返對應(yīng)文字流

(2) 說明

Hi,您好,歡迎使用有道智云實(shí)時語音識別Android SDK。

本文檔主要針對需要集成實(shí)時語音識別的Android開發(fā)工程師,詳細(xì)描述實(shí)時語音識別能力相關(guān)的技術(shù)內(nèi)容。

如果您想快速體驗(yàn)服務(wù),建議您前往 語音識別體驗(yàn)中心 或者在體驗(yàn)中心右下側(cè)找到小程序二維碼,掃描進(jìn)行體驗(yàn)。

如果您有與我們商務(wù)合作的需求,可以通過以下方式聯(lián)系我們:

商務(wù)郵箱: AIcloud_Business@corp.youdao.com

如果您對文檔內(nèi)容有任何疑問,可以通過以下幾種方式聯(lián)系我們:

客服QQ:1906538062

智云語音技術(shù)交流QQ群:861723255

聯(lián)系郵箱: zhiyun@corp.youdao.com

溫馨提示:

本文檔主要針對開發(fā)人員,接入測試前需要在后臺創(chuàng)建 Android 應(yīng)用,并綁定實(shí)例;如果您還沒有,請按照 新手指南 操作。
平臺向每個賬戶贈送50元的體驗(yàn)金,供用戶集成前測試所用,具體資費(fèi)規(guī)則詳見 實(shí)時語音識別服務(wù)報價 。

功能介紹

實(shí)時語音識別SDK是對有道實(shí)時語音識別接口服務(wù)進(jìn)行封裝。提供快速的接入方式;同時提供數(shù)據(jù)統(tǒng)計能力,方便了解用戶使用情況。

兼容性

支持設(shè)備:運(yùn)行了 Android 4.0.3以及以上系統(tǒng)的 Android 設(shè)備

實(shí)時語音識別SDK集成指南

集成前提

開始集成SDK之前開發(fā)者需要登錄 有道智云平臺 ,創(chuàng)建應(yīng)用獲取應(yīng)用ID(或者通過運(yùn)營人員獲取應(yīng)用ID),以便使用實(shí)時語音識別服務(wù)。

集成步驟

(1) SDK包導(dǎo)入

請在工程文件根目錄下創(chuàng)建一個名為 libs 的子目錄(有的話則不需要創(chuàng)建),并將ydasrsdk-v2.0.2.jar拷貝到 libs 目錄下,并將以下代碼添加到app的build.gradle中:

dependencies {
    ...
    implementation "android.arch.lifecycle:extensions:1.1.1"
    implementation "android.arch.lifecycle:common-java8:1.1.1"
    implementation "com.squareup.okhttp3:okhttp:3.11.0"
    implementation "com.google.code.gson:gson:2.8.5"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.3.0"

    implementation files('libs/ydasrsdk-v2.0.2.jar')
}

(2) AndroidManifest配置

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.BLUETOOTH" />

其中 RECORD_AUDIO、WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE 權(quán)限需要動態(tài)申請,申請權(quán)限代碼可見demo代碼所示。

(3) 代碼混淆配置

代碼混淆文件proguard-project.txt,添加如下內(nèi)容:

# Gson
-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }

#okhttp3
-dontwarn com.squareup.okhttp3.**
-keep class com.squareup.okhttp3.** { *;}
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**
-dontwarn org.conscrypt.**

#lifecycle
-keep public class android.arch.lifecycle.** {
    public protected *;
}
-keepclassmembers class ** {
    @android.arch.lifecycle.OnLifecycleEvent public *;
}

#kotlin
-dontwarn kotlin.**

#AsrSdk
-keep class com.youdao.ydasr.** { *; }
-keep interface com.youdao.ydasr.** { *; }
-keep class com.youdao.audio.** { *; }
-keep interface com.youdao.audio.** { *; }

功能集成

(1) 創(chuàng)建asr返回接口

private AsrListener mAsrListener = new AsrListener() {
    // 開始識別回調(diào)
    @Override
    public void onAsrStart() {}

    // 重連后再次連接成功回調(diào)
    @Override
    public void onAsrRestart() {}

    // 結(jié)束識別回調(diào)
    @Override
    public void onAsrStop() {}

    // 正在重連提示
    @Override
    public void onAsrReconnecting() {}

    // 錯誤回調(diào)
    @Override
    public void onAsrError(@NotNull AsrResultCode error) {

    // ASR結(jié)果回調(diào), isSentence當(dāng)前一句是否結(jié)束,是否是完整的句子
    @Override
    public void onAsrNext(@NotNull AsrResult result, boolean isSentence) {}

    // 音量變化回調(diào)
    @Override
    public void onAsrVolumeChange(float volume) {}

    // 后端點(diǎn)靜音回調(diào)
    @Override
    public void onAsrSilentEnd() {}

    // 前端點(diǎn)靜音回調(diào)
    @Override
    public void onAsrSilentStart() {}

    // 連接上藍(lán)牙麥克風(fēng)提示
    @Override
    public void onBluetoothAudioConnected() {}

    // 藍(lán)牙麥克風(fēng)斷開提示
    @Override
    public void onBluetoothAudioDisconnected() {}
};

(2) 創(chuàng)建AsrManager

在activity中創(chuàng)建AsrManager,初始化的參數(shù)包含appKey(如何獲取見集成前提)并注冊生命周期觀察

mAsrManager = AsrManager.getInstance(this, Consts.AsrAppKey, mAsrListener);
getLifecycle().addObserver(mAsrManager);

(3) 開始識別

Map<String, Object> params = new HashMap<>();
params.put(AsrParams.LANG, mLang);
params.put(AsrParams.SILENT_TIMEOUT_START, 5000L);
params.put(AsrParams.SILENT_TIMEOUT_END, 10000L);
params.put(AsrParams.SENTENCE_TIMEOUT, 3000L);
params.put(AsrParams.CONNECT_TIMEOUT, 10000L);
params.put(AsrParams.WAIT_SERVER_DISCONNECT, true);
mAsrManager.start(params);

注:音頻文件僅支持16k采樣的wav音頻

(4) 停止識別

mAsrManager.stop();

(5) 插入本地數(shù)據(jù)

Map<String, Object> params = new HashMap<>();
        params.put(AsrParams.LANG, mLang);
        params.put(AsrParams.SILENT_TIMEOUT_START, 5000L);
        params.put(AsrParams.SILENT_TIMEOUT_END, 10000L);
        params.put(AsrParams.SENTENCE_TIMEOUT, 3000L);
        params.put(AsrParams.CONNECT_TIMEOUT, 10000L);
        params.put(AsrParams.WAIT_SERVER_DISCONNECT, true);
mAsrManager.startConnect(params);

然后在asr回掉的onAsrStart中插入本地文件流

mAsrManager.insertAudioBytes(bytes);

識別結(jié)果

  • 識別結(jié)果示例
{
    "result": [{
        "st": [{
            "bg": 30,
            "ed": 480,
            "ws": [{
                "w": "Have",
                "wb": 30,
                "we": 240
            }, {
                "w": "a",
                "wb": 240,
                "we": 270
            }, {
                "w": "good",
                "wb": 270,
                "we": 480
            }, {
                "w": "day.",
                "wb": 480,
                "we": 480
            }]
        }],
        "seg_id": 0
    }],
    "errorCode": "0",
    "action": "recognition"
}
  • 識別結(jié)果說明
參數(shù)含義說明
errorCodeString狀態(tài)碼,詳見 錯誤代碼列表
actionString狀態(tài)標(biāo)。started:握手;recognition:識別;error:錯誤
resultString識別結(jié)果數(shù)據(jù)
bg分句開始時間單位毫秒/ms
ed分句結(jié)束時間單位毫秒/ms
w詞(字)識別結(jié)果
wb詞(字)開始時間單位毫秒/ms
we詞(字)結(jié)束時間單位毫秒/ms
seg_id分句 id從 0 開始遞增

支持語言

language語種(中文)語言代碼
Arabic (United Arab Emirates)阿拉伯語(阿拉伯聯(lián)合酋長國)ar-AE
Arabic (Bahrain)阿拉伯語(巴林)ar-BH
Arabic (Algeria)阿拉伯語(阿爾及利亞)ar-DZ
Arabic (Egypt)阿拉伯語(埃及)ar-EG
Arabic (Israel)阿拉伯語(以色列)ar-IL
Arabic (Iraq)阿拉伯語(伊拉克)ar-IQ
Arabic (Jordan)阿拉伯語(約旦)ar-JO
Arabic (Kuwait)阿拉伯語(科威特)ar-KW
Arabic (Lebanon)阿拉伯語(黎巴嫩)ar-LB
Arabic (Morocco)阿拉伯語(摩洛哥)ar-MA
Arabic (Oman)阿拉伯語(阿曼)ar-OM
Arabic (State of Palestine)阿拉伯語(巴勒斯坦國)ar-PS
Arabic (Qatar)阿拉伯語(卡塔爾)ar-QA
Arabic (Saudi Arabia)阿拉伯語(沙特阿拉伯)ar
Arabic (Tunisia)阿拉伯語(突尼斯)ar-TN
German (Germany)德國(德國)de
English (Australia)英語(澳大利亞)en-AUS
English (Canada)英語(加拿大)en-CA
English (United Kingdom)英語(英國)en-GBR
English (Ghana)英語(加納)en-GH
English (Ireland)英語(愛爾蘭)en-IE
English (India)英語(印度)en-IND
English (Kenya)英語(肯尼亞)en-KE
English (Nigeria)英語(尼日利亞)en-NG
English (New Zealand)英語(新西蘭)en-NZ
English (Philippines)英語(菲律賓)en-PH
English (Singapore)英語(新加坡)en-SG
English (Tanzania)英語(坦桑尼亞)en-TZ
English (United States)英語(美國)en
English (South Africa)英語(南非)en-ZAF
Spanish (Argentina)西班牙語(阿根廷)es-AR
Spanish (Bolivia)西班牙語(玻利維亞)es-BO
Spanish (Chile)西班牙語(智利)es-CL
Spanish (Colombia)西班牙語(哥倫比亞)es-COL
Spanish (Costa Rica)西班牙語(哥斯達(dá)黎加)es-CR
Spanish (Dominican Republic)西班牙語(多米尼加共和國)es-DO
Spanish (Ecuador)西班牙語(厄瓜多爾)es-EC
Spanish (Spain)西班牙語(西班牙)es
Spanish (Guatemala)西班牙語(危地馬拉)es-GT
Spanish (Honduras)西班牙語(洪都拉斯)es-HN
Spanish (Mexico)西班牙語(墨西哥)es-MEX
Spanish (Nicaragua)西班牙語(尼加拉瓜)es-NI
Spanish (Panama)西班牙語(巴拿馬)es-PA
Spanish (Peru)西班牙語(秘魯)es-PE
Spanish (Puerto Rico)西班牙語(波多黎各)es-PR
Spanish (Paraguay)西班牙語(巴拉圭)es-PY
Spanish (El Salvador)西班牙語(薩爾瓦多)es-SV
Spanish (United States)西班牙語(美國)es-US
Spanish (Uruguay)西班牙語(烏拉圭)es-UY
Spanish (Venezuela)西班牙語(委內(nèi)瑞拉)es-VE
French (Canada)法語(加拿大)fr-CA
French (Canada)法語(加拿大)fr-CAN
French (France)法國(法國)fr
Italian (Italy)意大利(意大利)it
Japanese (Japan)日本(日本)ja
Korean (South Korea)朝鮮(韓國)ko
Dutch (Netherlands)荷蘭(荷蘭)nl
Polish (Poland)波蘭(波蘭)pl
Portuguese (Brazil)葡萄牙語(巴西)pt-BRA
Russian (Russia)俄羅斯(俄羅斯)ru
Thai (Thailand)泰國(泰國)th
Turkish (Turkey)土耳其(土耳其)tr
Chinese, Mandarin (Simplified, China)中文、普通話(簡體、中國)zh-CHS
Chinese, Mandarin (Simplified, Hong Kong)中文、普通話(簡體,香港)zh-HK
Chinese, Mandarin (Simplified, Taiwan)中文、普通話(簡體、臺灣)zh-TWN
Bulgarian (Bulgaria)保加利亞(保加利亞)bg
Catalan (Spain)加泰羅尼亞語(西班牙)ca
Czech (Czech Republic)捷克(捷克)cs
Danish (Denmark)丹麥(丹麥)da
Greek (Greece)希臘(希臘)el
Finnish (Finland)芬蘭(芬蘭)fi
Hebrew (Israel)希伯來語(以色列)he
Hindi (India)印地語(印度)hi
Croatian (Croatia)克羅地亞(克羅地亞)hr
Hungarian (Hungary)匈牙利(匈牙利)hu
Indonesian (Indonesia)印尼(印度尼西亞)id
Lithuanian (Lithuania)立陶宛(立陶宛)lt-LT
Latvian (Latvia)拉脫維亞(拉脫維亞)lv-LV
Norwegian Bokm?l (Norway)挪威書面挪威語(挪威)no
Portuguese (Portugal)葡萄牙語(葡萄牙)pt
Romanian (Romania)羅馬尼亞(羅馬尼亞)ro
Slovak (Slovakia)斯洛伐克(斯洛伐克)sk
Slovenian (Slovenia)斯洛文尼亞(斯洛文尼亞)sl
Serbian (Serbia)塞爾維亞(塞爾維亞)sr-RS
Swedish (Sweden)瑞典(瑞典)sv
Ukrainian (Ukraine)烏克蘭(烏克蘭)uk
Vietnamese (Vietnam)越南(越南)vi
Afrikaans (South Africa)布爾語(南非)af-ZA
Amharic (Ethiopia)阿姆哈拉語(埃塞俄比亞)am-ET
Azerbaijani (Azerbaijan)阿塞拜疆(阿塞拜疆)az-AZ
Bengali (Bangladesh)孟加拉(孟加拉)bn-BD
Bengali (India)孟加拉語(印度)bn-IN
Estonian (Estonia)愛沙尼亞(愛沙尼亞)et-EE
Basque (Spain)巴斯克(西班牙)eu-ES
Persian (Iran)波斯(伊朗)fa-IR
Filipino (Philippines)菲律賓(菲律賓)tl
Galician (Spain)加利西亞(西班牙)gl-ES
Gujarati (India)古吉拉特語(印度)gu-IN
Armenian (Armenia)亞美尼亞(亞美尼亞)hy-AM
Icelandic (Iceland)冰島(冰島)is-IS
Javanese (Indonesia)爪哇(印度尼西亞)jv-ID
Georgian (Georgia)格魯吉亞(Georgia)ka-GE
Khmer (Cambodia)紅色(高棉語)km-KH
Kannada (India)埃納德語(印度)kn-IN
Lao (Laos)老撾(老撾)lo
Macedonian (North Macedonia)馬其頓(北馬其頓)mk-MK
Malayalam (India)馬拉雅拉姆語(印度)ml-IN
Mongolian (Mongolia)蒙古(蒙古)mn-MN
Marathi (India)馬拉地語(印度)mr-IN
Malay (Malaysia)馬來語(馬來西亞)ms
Burmese (Myanmar)緬甸(緬甸)my-MM
Nepali (Nepal)尼泊爾(尼泊爾)ne-NP
Punjabi (Gurmukhi, India)旁遮普(果魯穆奇語、印度)pa-guru-IN
Sinhala (Sri Lanka)僧伽羅語(斯里蘭卡)si-LK
Albanian (Albania)阿爾巴尼亞(阿爾巴尼亞)sq-AL
Sundanese (Indonesia)巽他語(印度尼西亞)su-ID
Swahili (Kenya)斯瓦希里語(肯尼亞)sw-KE
Swahili (Tanzania)斯瓦希里語(坦桑尼亞)sw-TZ
Tamil (India)泰米爾語(印度)ta
Tamil (Sri Lanka)泰米爾語(斯里蘭卡)ta-LK
Tamil (Malaysia)泰米爾語(馬來西亞)ta-MY
Tamil (Singapore)泰米爾語(新加坡)ta-SG
Telugu (India)泰盧固語(印度)te
Urdu (India)烏爾都語(印度)ur-IN
Urdu (Pakistan)烏爾都語(巴基斯坦)ur-PK
Uzbek (Uzbekistan)烏茲別克斯坦(烏茲別克斯坦)uz-UZ
Chinese, Cantonese (Traditional, Hong Kong)中文、粵語(繁體、香港)yue
Zulu (South Africa)祖魯語(南非)zu-ZA

錯誤代碼列表

錯誤碼含義
101缺少必填的參數(shù)
102不支持的語言類型
103翻譯文本過長
104不支持的API類型
105不支持的簽名類型
106不支持的響應(yīng)類型
107不支持的傳輸加密類型
108應(yīng)用ID無效,注冊賬號,登錄后臺創(chuàng)建應(yīng)用和實(shí)例并完成綁定,可獲得應(yīng)用ID和應(yīng)用密鑰等信息
109batchLog格式不正確
110無相關(guān)服務(wù)的有效實(shí)例
111開發(fā)者賬號無效
113q不能為空
114不支持的圖片傳輸方式
201解密失敗,可能為DES,BASE64,URLDecode的錯誤
202簽名檢驗(yàn)失敗
203訪問IP地址不在可訪問IP列表
205請求的接口與應(yīng)用的平臺類型不一致,如有疑問請參考入門指南
206因?yàn)闀r間戳無效導(dǎo)致簽名校驗(yàn)失敗
207重放請求
301辭典查詢失敗
302翻譯查詢失敗
303服務(wù)端的其它異常
304會話閑置太久超時
401賬戶已經(jīng)欠費(fèi)停
402offlinesdk不可用
411訪問頻率受限,請稍后訪問
412長請求過于頻繁,請稍后訪問
1001無效的OCR類型
1002不支持的OCR image類型
1003不支持的OCR Language類型
1004識別圖片過大
1201圖片base64解密失敗
1301OCR段落識別失敗
1411訪問頻率受限
1412超過最大識別字節(jié)數(shù)
2003不支持的語音聲道
2004不支持的語音上傳類型
2005不支持的語言類型
2006不支持的識別類型
2201識別音頻文件過大
2301識別音頻時長過長
2411不支持的音頻文件類型
2412不支持的發(fā)音類型
3001不支持的語音格式
3002不支持的語音采樣率
3003不支持的語音聲道
3004不支持的語音上傳類型
3005不支持的語言類型
3006不支持的識別類型
3007識別音頻文件過大
3008識別音頻時長過長
3009不支持的音頻文件類型
3010不支持的發(fā)音類型
3201解密失敗
3301語音識別失敗
3302語音翻譯失敗
3303服務(wù)的異常
3411訪問頻率受限,請稍后訪問
3412超過最大請求字符數(shù)
4001不支持的語音識別格式
4002不支持的語音識別采樣率
4003不支持的語音識別聲道
4004不支持的語音上傳類型
4005不支持的語言類型
4006識別音頻文件過大
4007識別音頻時長過長
4201解密失敗
4301語音識別失敗
4303服務(wù)的異常
4411訪問頻率受限,請稍后訪問
4412超過最大請求時長
5001無效的OCR類型
5002不支持的OCR image類型
5003不支持的語言類型
5004識別圖片過大
5005不支持的圖片類型
5006文件為空
5201解密錯誤,圖片base64解密失敗
5301OCR段落識別失敗
5411訪問頻率受限
5412超過最大識別流量
9001不支持的語音格式
9002不支持的語音采樣率
9003不支持的語音聲道
9004不支持的語音上傳類型
9005不支持的語音識別 Language類型
9301ASR識別失敗
9303服務(wù)器內(nèi)部錯誤
9411訪問頻率受限(超過最大調(diào)用次數(shù))
9412超過最大處理語音長度
10001無效的OCR類型
10002不支持的OCR image類型
10004識別圖片過大
10201圖片base64解密失敗
10301OCR段落識別失敗
10411訪問頻率受限
10412超過最大識別流量
13001不支持的角度類型
13002不支持的文件類型
13003表格識別圖片過大
13004文件為空
13301表格識別失敗
17001需要圖片
17002圖片過大(1M)
17003識別類型未找到
17004不支持的識別類型
17005服務(wù)調(diào)用失敗
-1000未知錯誤
-2000查詢輸入為空

常見問題

錯誤1

  • 錯誤說明
null
C:/Users/liuyanyan/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/7cbab2e2b4c7701e76fa4d46215a4687/res/values-v28/values-v28.xml
D:/workdir/ydasrDemo
C:/Users/liuyanyan/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/7cbab2e2b4c7701e76fa4d46215a4687/res/values/values.xml
null
failed linking references. 
  • 解決方案
targetSdkVersion 28
...
dependencies {
    ...
    implementation 'com.android.support:appcompat-v7:28.0.0'
}

錯誤2

  • 錯誤說明
null
Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)
Stripped invalid locals information from 1 method.
null
com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\liuyanyan\.gradle\caches\modules-2\files-2.1\android.arch.lifecycle\common-java8\1.1.1\795d68cd761d093ccb235d1d91b8fd17c2ae25ff\common-java8-1.1.1.jar
com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
com.android.tools.r8.CompilationFailedException: Compilation failed to complete
com.android.tools.r8.utils.AbortException
  • 解決方案:gradle中增加如下配置
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

其他注意事項(xiàng)

  • asr回調(diào)方法非主線程的,如果需要在回調(diào)中更新UI,需放到主線程中,代碼可見demo.
  • 權(quán)限及動態(tài)權(quán)限一定要添加否則可能導(dǎo)致無反應(yīng)
  • 依賴包也必須都添加,否則可能導(dǎo)致無反應(yīng)或崩潰問題

版本更新記錄

上線日期版本號更新內(nèi)容
2018.11.12v1.0.0支持在線實(shí)時語音識別
2019.11.12v2.0.0支持插入本地語音
2023.08.09v2.0.2升級支持語言
久久精品一区二区无码| 精品人妻一区二区三区四区不卡| 99精品热视频只有精品10 m| 大香蕉久| 求av网址| 尹人综合在线| 三级免费| 超碰九九| 无码高清视频| 国产在线无码不卡| 淘米网| 蜜桃久久精品| 久久精品一区二区三| 国产A级毛片久久久久久久电影| 一本大道久久a久久综合婷婷| 福利片在线| 国产乡下三级全黄三级bd| 国产在线第一页| 国内综合一本在线| 中文一区一区三区高中清不卡| 丁香七月婷婷| 亚洲qv一级熟妇免费视频| 东京热av| 色婷婷,色五月| 欧美日韩成人av欧美| 日韩1级特黄片| 海兴县| 色噜噜婷婷丁香一区二区| 欧美一区二区久久| 久久久久亚洲精品无码蜜桃| 日韩黄片免费看| 囯产99中文在线观看| 亚洲免费无码AV| 成在人线AV无码免费高潮喷水| 欧美老妇性视频| 少妇影院y1111| 欧美猛男男办公室激情| 亚州香蕉在线视频| 99久久久精品一区二区| 涩二区| 婷婷久|