日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Go Demo

本文介紹了如何使用阿里云智能語音服務提供的Go SDK,包括SDK的安裝方法及SDK代碼示例。

前提條件

  • 使用SDK前,請先閱讀接口說明,詳情請參見接口說明

  • 已開通智能語音交互并獲取AccessKey ID和AccessKey Secret,詳情請參見從這里開始

示例說明

  • 錄音文件識別示例使用Go SDK的CommonRequest提交識別請求和查詢識別結果,采用RPC風格的POP API調用方式。

  • 關于阿里云Go SDK,請參見使用阿里云Go SDK

  • Go SDK CommonRequest的使用方法,請參見使用CommonRequest進行調用

SDK安裝

阿里云Go SDK支持Go 1.7及以上版本,您可以通過如下方式安裝:

  • 使用Glide(推薦)

    glide get github.com/aliyun/alibaba-cloud-sdk-go
  • 使用govendor:

    go get -u github.com/aliyun/alibaba-cloud-sdk-go/sdk

調用步驟

  1. 創建并初始化阿里云鑒權對象。

    鑒權使用阿里云賬號的AccessKey ID和AccessKey Secret。

  2. 創建錄音文件識別請求,并設置請求參數。

  3. 提交錄音文件識別請求,處理服務端返回的響應同時獲取任務ID。

  4. 創建識別結果查詢請求,設置查詢參數為任務ID。

  5. 輪詢識別結果。

代碼示例

  • 下載nls-sample-16k.wav。該錄音文件為PCM編碼格式16000Hz采樣率,管控臺設置的模型為通用模型。如果使用其他錄音文件,請填入對應的編碼格式和采樣率,并在管控臺設置對應的模型,模型設置請參見管理項目

  • 調用接口前,需配置環境變量,通過環境變量讀取訪問憑證。智能語音交互的AccessKey ID、AccessKey Secret和AppKey的環境變量名:ALIYUN_AK_IDALIYUN_AK_SECRETNLS_APP_KEY

package main
import (
    "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
    "github.com/aliyun/alibaba-cloud-sdk-go/sdk"
    "fmt"
    "encoding/json"
    "time"
)
func main() {
    // 地域ID,固定值。
    const REGION_ID string = "cn-shanghai"
    const ENDPOINT_NAME string = "cn-shanghai"
    const PRODUCT string = "nls-filetrans"
    const DOMAIN string = "filetrans.cn-shanghai.aliyuncs.com"
    const API_VERSION string = "2018-08-17"
    const POST_REQUEST_ACTION string = "SubmitTask"
    const GET_REQUEST_ACTION  string = "GetTaskResult"
    // 請求參數
    const KEY_APP_KEY string = "appkey"      //此處appkey無需替換。
    const KEY_FILE_LINK string = "file_link"
    const KEY_VERSION string = "version"
    const KEY_ENABLE_WORDS string = "enable_words"
    // 響應參數
    const KEY_TASK string = "Task"
    const KEY_TASK_ID string = "TaskId"
    const KEY_STATUS_TEXT string = "StatusText"
    const KEY_RESULT string = "Result"
    // 狀態值
    const STATUS_SUCCESS string = "SUCCESS"
    const STATUS_RUNNING string = "RUNNING"
    const STATUS_QUEUEING string = "QUEUEING"
    var accessKeyId string = os.Getenv("ALIYUN_AK_ID")     //獲取AccessKey ID和AccessKey Secret請前往控制臺:https://ram.console.aliyun.com/manage/ak
    var accessKeySecret string = os.Getenv("ALIYUN_AK_SECRET")
    var appKey string = os.Getenv("NLS_APP_KEY")
    var fileLink string = "https://gw.alipayobjects.com/os/bmw-prod/0574ee2e-f494-45a5-820f-63aee583045a.wav"
    client, err := sdk.NewClientWithAccessKey(REGION_ID, accessKeyId, accessKeySecret)
    if err != nil {
        panic(err)
    }
    postRequest := requests.NewCommonRequest()
    postRequest.Domain = DOMAIN
    postRequest.Version = API_VERSION
    postRequest.Product = PRODUCT
    postRequest.ApiName = POST_REQUEST_ACTION
    postRequest.Method = "POST"
    mapTask := make(map[string]string)
    mapTask[KEY_APP_KEY] = appKey
    mapTask[KEY_FILE_LINK] = fileLink
    // 新接入請使用4.0版本,已接入(默認2.0)如需維持現狀,請注釋掉該參數設置。
    mapTask[KEY_VERSION] = "4.0"
    // 設置是否輸出詞信息,默認為false。開啟時需要設置version為4.0。
    mapTask[KEY_ENABLE_WORDS] = "false"
    task, err := json.Marshal(mapTask)
    if err != nil {
        panic(err)
    }
    postRequest.FormParams[KEY_TASK] = string(task)
    postResponse, err := client.ProcessCommonRequest(postRequest)
    if err != nil {
        panic(err)
    }
    postResponseContent := postResponse.GetHttpContentString()
    fmt.Println(postResponseContent)
    if (postResponse.GetHttpStatus() != 200) {
        fmt.Println("錄音文件識別請求失敗,Http錯誤碼: ", postResponse.GetHttpStatus())
        return
    }
    var postMapResult map[string]interface{}
    err = json.Unmarshal([]byte(postResponseContent), &postMapResult)
    if err != nil {
        panic(err)
    }
    var taskId string = ""
    var statusText string = ""
    statusText = postMapResult[KEY_STATUS_TEXT].(string)
    if statusText == STATUS_SUCCESS {
        fmt.Println("錄音文件識別請求成功響應!")
        taskId = postMapResult[KEY_TASK_ID].(string)
    } else {
        fmt.Println("錄音文件識別請求失敗!")
        return
    }
    getRequest := requests.NewCommonRequest()
    getRequest.Domain = DOMAIN
    getRequest.Version = API_VERSION
    getRequest.Product = PRODUCT
    getRequest.ApiName = GET_REQUEST_ACTION
    getRequest.Method = "GET"
    getRequest.QueryParams[KEY_TASK_ID] = taskId
    statusText = ""
    for true {
        getResponse, err := client.ProcessCommonRequest(getRequest)
        if err != nil {
            panic(err)
        }
        getResponseContent := getResponse.GetHttpContentString()
        fmt.Println("識別查詢結果:", getResponseContent)
        if (getResponse.GetHttpStatus() != 200) {
            fmt.Println("識別結果查詢請求失敗,Http錯誤碼:", getResponse.GetHttpStatus())
            break
        }
        var getMapResult map[string]interface{}
        err = json.Unmarshal([]byte(getResponseContent), &getMapResult)
        if err != nil {
            panic(err)
        }
        statusText = getMapResult[KEY_STATUS_TEXT].(string)
        if statusText == STATUS_RUNNING || statusText == STATUS_QUEUEING {
            time.Sleep(10 * time.Second)
        } else {
            break
        }
    }
    if statusText == STATUS_SUCCESS {
        fmt.Println("錄音文件識別成功!")
    } else {
        fmt.Println("錄音文件識別失敗!")
    }
}