微软语音识别

239 阅读12分钟

前言

  1. 微软语音识别支持直接语音实时转换为文字
  2. 能直接输出翻译且符合语法避免了说完再翻译非常方便

文档地址 learn.microsoft.com/zh-cn/objec…

演示效果

实现

由于微软没有提供demo,自己调研了下封装了一个直接可以直接使用的工具类

//

//  SwiftAzureLanguageSpeechTool.swift

//  Pods

//

//  Created by  tqh on 2025/1/10.

//

  


import UIKit

import MicrosoftCognitiveServicesSpeech

import AVFoundation

  


class SwiftAzureLanguageSpeechTool {

    

    // 是否正在录制

    var continousListeningStarted :Bool = false

    

    // 语言识别

    var speech: SPXTranslationRecognizer? = nil

    

    // 开始识别

    func startSpeech(subscription : String,

                     region: String,

                     leftKey :String,

                     rightKey :String,

                     completion: @escaping (Bool, NSDictionary) -> Void,

                     success: @escaping () -> Void,

                     fail: @escaping (String) -> Void){

        print("Starting continous recognition")

        var speechConfig: SPXSpeechTranslationConfiguration? = nil;

        do{

          try speechConfig = SPXSpeechTranslationConfiguration.init(subscription: subscription, region: region)

            speechConfig?.speechRecognitionLanguage = leftKey;

            speechConfig?.addTargetLanguage(leftKey);

            speechConfig?.addTargetLanguage(rightKey);

        }catch {

            continousListeningStarted = false;

            fail("recognition error \(error) happened")

            return;

        }

        // 监听识别。

        do {

            speech = try SPXTranslationRecognizer.init(speechConfig!)

            

            // 识别监听

            speech!.addRecognizedEventHandler {  reco,  evt in

                print("intermediate recognition result:\(evt.result.translations)");

                completion(false, evt.result.translations as NSDictionary)

            };

            // 识别中监听

            speech!.addRecognizingEventHandler {  reco,  evt in

                print("final result:\(evt.result.translations)");

                completion(true, evt.result.translations as NSDictionary)

            };

            speech!.addCanceledEventHandler { reco,evt in

                let detail = self.getErrorDetail(evt: evt)

                fail("speech error \(detail)")

            };

            print("Listening...")

            try! speech!.startContinuousRecognition()

            continousListeningStarted = true;

            success()

        }catch {

            continousListeningStarted = false;

            fail("recognition error \(error) happened")

        }

    }

    

    

    // 开始识别授权方式

    func startSpeechAuth(authorizationToken : String,

                     region: String,

                     leftKey :String,

                     rightKey :String,

                     completion: @escaping (Bool, NSDictionary) -> Void,

                     success: @escaping () -> Void,

                     fail: @escaping (String) -> Void){

        print("Starting continous recognition")

        var speechConfig: SPXSpeechTranslationConfiguration? = nil;

        do{

            try speechConfig = SPXSpeechTranslationConfiguration(authorizationToken: authorizationToken, region: region)

            speechConfig?.speechRecognitionLanguage = leftKey;

//            speechConfig?.addTargetLanguage("zh-CN");

//            speechConfig?.addTargetLanguage("en-US");

//            speechConfig?.addTargetLanguage("ja-JP");

            speechConfig?.addTargetLanguage(leftKey);

            speechConfig?.addTargetLanguage(rightKey);

        }catch {

            continousListeningStarted = false;

            fail("recognition error \(error) happened")

            return;

        }

        // 监听识别。

        do {

            speech = try SPXTranslationRecognizer.init(speechConfig!)

            

            // 识别监听

            speech!.addRecognizedEventHandler {  reco,  evt in

                print("intermediate recognition result:\(evt.result.translations)");

                completion(false, evt.result.translations as NSDictionary)

            };

            // 识别中监听

            speech!.addRecognizingEventHandler {  reco,  evt in

                print("final result:\(evt.result.translations)");

                completion(true, evt.result.translations as NSDictionary)

            };

            speech!.addCanceledEventHandler { reco,evt in

                let detail = self.getErrorDetail(evt: evt)

                fail("speech error \(detail)")

            };

            print("Listening...")

            try! speech!.startContinuousRecognition()

            continousListeningStarted = true;

            success()

        }catch {

            continousListeningStarted = false;

            fail("recognition error \(error) happened")

        }

    }

    

    // error detail

    private func getErrorDetail(evt:SPXTranslationRecognitionCanceledEventArgs)->String{

        var detail = "";

        switch evt.errorCode {

        case .authenticationFailure:

            detail = "authenticationFailure"

        case .badRequest:

            detail = "badRequest"

        case .connectionFailure:

            detail = "connectionFailure"

        case .forbidden:

            detail = "forbidden"

        case .noError:

            detail = "noError"

        case .runtimeError:

            detail = "runtimeError"

        case .serviceError:

            detail = "serviceError"

        case .serviceTimeout:

            detail = "serviceTimeout"

        case .serviceUnavailable:

            detail = "serviceUnavailable"

        case .tooManyRequests:

            detail = "tooManyRequests"

        default:

            detail = "\(evt.errorCode.rawValue)"

        }

        return detail;

    }

    

    // 停止识别

    func stopSpeech(success: @escaping () -> Void,fail: @escaping (String) -> Void){

        print("Stopping continous recognition")

        do {

         try speech!.stopContinuousRecognition()

         speech = nil;

         continousListeningStarted = false

        }

        catch {

            fail("Error occurred stopping continous recognition")

        }

    }

}

微软语音识别key自查表这边也提供一个,整理也花了不少时间,用于切换语言

const azureLang = [{"key": "af-ZA", "cn": "南非荷兰语(南非)", "en": "Afrikaans (South Africa)", "value": "Afrikaans (Suid-Afrika)", "short": "Afrikaans"},
{"key": "am-ET", "cn": "阿姆哈拉语(埃塞俄比亚)", "en": "Amharic (Ethiopia)", "value": "አማርኛ (ኢትዮጵያ)", "short": "አማርኛ"},
{"key": "ar-AE", "cn": "阿拉伯语(阿拉伯联合酋长国)", "en": "Arabic (United Arab Emirates)", "value": "العربية (الإمارات العربية المتحدة)", "short": "العربية"},
{"key": "ar-BH", "cn": "阿拉伯语(巴林)", "en": "Arabic (Bahrain)", "value": "العربية (البحرين)", "short": "العربية"},
{"key": "ar-DZ", "cn": "阿拉伯语(阿尔及利亚)", "en": "Arabic (Algeria)", "value": "العربية (الجزائر)", "short": "العربية"},
{"key": "ar-EG", "cn": "阿拉伯语(埃及)", "en": "Arabic (Egypt)", "value": "العربية (مصر)", "short": "العربية"},
{"key": "ar-IL", "cn": "阿拉伯语(以色列)", "en": "Arabic (Israel)", "value": "العربية (إسرائيل)", "short": "العربية"},
{"key": "ar-IQ", "cn": "阿拉伯语(伊拉克)", "en": "Arabic (Iraq)", "value": "العربية (العراق)", "short": "العربية"},
{"key": "ar-JO", "cn": "阿拉伯语(约旦)", "en": "Arabic (Jordan)", "value": "العربية (الأردن)", "short": "العربية"},
{"key": "ar-KW", "cn": "阿拉伯语(科威特)", "en": "Arabic (Kuwait)", "value": "العربية (الكويت)", "short": "العربية"},
{"key": "ar-LB", "cn": "阿拉伯语(黎巴嫩)", "en": "Arabic (Lebanon)", "value": "العربية (لبنان)", "short": "العربية"},
{"key": "ar-LY", "cn": "阿拉伯语(利比亚)", "en": "Arabic (Libya)", "value": "العربية (ليبيا)", "short": "العربية"},
{"key": "ar-MA", "cn": "阿拉伯语(摩洛哥)", "en": "Arabic (Morocco)", "value": "العربية (المغرب)", "short": "العربية"},
{"key": "ar-OM", "cn": "阿拉伯语(阿曼)", "en": "Arabic (Oman)", "value": "العربية (عمان)", "short": "العربية"},
{"key": "ar-PS", "cn": "阿拉伯语(巴勒斯坦民族权利机构)", "en": "Arabic (Palestinian Authority)", "value": "العربية (سلطة الفلسطينية)", "short": "العربية"},
{"key": "ar-QA", "cn": "阿拉伯语(卡塔尔)", "en": "Arabic (Qatar)", "value": "العربية (قطر)", "short": "العربية"},
{"key": "ar-SA", "cn": "阿拉伯语(沙特阿拉伯)", "en": "Arabic (Saudi Arabia)", "value": "العربية (المملكة العربية السعودية)", "short": "العربية"},
{"key": "ar-SY", "cn": "阿拉伯语(叙利亚)", "en": "Arabic (Syria)", "value": "العربية (سورية)", "short": "العربية"},
{"key": "ar-TN", "cn": "阿拉伯语(突尼斯)", "en": "Arabic (Tunisia)", "value": "العربية (تونس)", "short": "العربية"},
{"key": "ar-YE", "cn": "阿拉伯语(也门)", "en": "Arabic (Yemen)", "value": "العربية (اليمن)", "short": "العربية"},
{"key": "az-AZ", "cn": "阿塞拜疆语(拉丁语,阿塞拜疆)", "en": "Azerbaijani (Latin, Azerbaijan)", "value": "Azərbaycan dili (latın, Azərbaycan)", "short": "Azərbaycan dili"},
{"key": "bg-BG", "cn": "保加利亚语(保加利亚)", "en": "Bulgarian (Bulgaria)", "value": "Български (България)", "short": "Български"},
{"key": "bn-IN", "cn": "孟加拉语(印度)", "en": "Bengali (India)", "value": "বাংলা (ভারত)", "short": "বাংলা"},
{"key": "bs-BA", "cn": "波斯尼亚语(波斯尼亚和黑塞哥维那)", "en": "Bosnian (Bosnia and Herzegovina)", "value": "Bosanski (Bosna i Hercegovina)", "short": "Bosanski"},
{"key": "ca-ES", "cn": "加泰罗尼亚语", "en": "Catalan", "value": "Català", "short": "Català"},
{"key": "cs-CZ", "cn": "捷克语(捷克)", "en": "Czech (Czech Republic)", "value": "Čeština (Česká republika)", "short": "Čeština"},
{"key": "cy-GB", "cn": "威尔士语(英国)", "en": "Welsh (United Kingdom)", "value": "Cymraeg (Teyrnas Unedig)", "short": "Cymraeg"},
{"key": "da-DK", "cn": "丹麦语(丹麦)", "en": "Danish (Denmark)", "value": "Dansk (Danmark)", "short": "Dansk"},
{"key": "de-AT", "cn": "德语(奥地利)", "en": "German (Austria)", "value": "Deutsch (Österreich)", "short": "Deutsch"},
{"key": "de-CH", "cn": "德语(瑞士)", "en": "German (Switzerland)", "value": "Deutsch (Schweiz)", "short": "Deutsch"},
{"key": "de-DE", "cn": "德语(德国)", "en": "German (Germany)", "value": "Deutsch (Deutschland)", "short": "Deutsch"},
{"key": "el-GR", "cn": "希腊语(希腊)", "en": "Greek (Greece)", "value": "Ελληνικά (Ελλάδα)", "short": "Ελληνικά"},
{"key": "en-AU", "cn": "英语(澳大利亚)", "en": "English (Australia)", "value": "English (Australia)", "short": "English"},
{"key": "en-CA", "cn": "英语(加拿大)", "en": "English (Canada)", "value": "English (Canada)", "short": "English"},
{"key": "en-GB", "cn": "英语(英国)", "en": "English (United Kingdom)", "value": "English (United Kingdom)", "short": "English"},
{"key": "en-GH", "cn": "英语(加纳)", "en": "English (Ghana)", "value": "English (Ghana)", "short": "English"},
{"key": "en-IE", "cn": "英语(爱尔兰)", "en": "English (Ireland)", "value": "English (Ireland)", "short": "English"},
{"key": "en-IN", "cn": "英语(印度)", "en": "English (India)", "value": "English (India)", "short": "English"},
{"key": "en-KE", "cn": "英语(肯尼亚)", "en": "English (Kenya)", "value": "English (Kenya)", "short": "English"},
{"key": "en-NG", "cn": "英语(尼日利亚)", "en": "English (Nigeria)", "value": "English (Nigeria)", "short": "English"},
{"key": "en-NZ", "cn": "英语(新西兰)", "en": "English (New Zealand)", "value": "English (New Zealand)", "short": "English"},
{"key": "en-PH", "cn": "英语(菲律宾)", "en": "English (Philippines)", "value": "English (Philippines)", "short": "English"},
{"key": "en-SG", "cn": "英语(新加坡)", "en": "English (Singapore)", "value": "English (Singapore)", "short": "English"},
{"key": "en-TZ", "cn": "英语(坦桑尼亚)", "en": "English (Tanzania)", "value": "English (Tanzania)", "short": "English"},
{"key": "en-US", "cn": "英语(美国)", "en": "English (United States)", "value": "English (United States)", "short": "English"},
{"key": "en-ZA", "cn": "英语(南非)", "en": "English (South Africa)", "value": "English (South Africa)", "short": "English"},
{"key": "es-AR", "cn": "西班牙语(阿根廷)", "en": "Spanish (Argentina)", "value": "Español (Argentina)", "short": "Español"},
{"key": "es-BO", "cn": "西班牙语(玻利维亚)", "en": "Spanish (Bolivia)", "value": "Español (Bolivia)", "short": "Español"},
{"key": "es-CL", "cn": "西班牙语(智利)", "en": "Spanish (Chile)", "value": "Español (Chile)", "short": "Español"},
{"key": "es-CO", "cn": "西班牙语(哥伦比亚)", "en": "Spanish (Colombia)", "value": "Español (Colombia)", "short": "Español"},
{"key": "es-CR", "cn": "西班牙语(哥斯达黎加)", "en": "Spanish (Costa Rica)", "value": "Español (Costa Rica)", "short": "Español"},
{"key": "es-CU", "cn": "西班牙语(古巴)", "en": "Spanish (Cuba)", "value": "Español (Cuba)", "short": "Español"},
{"key": "es-DO", "cn": "西班牙语(多米尼加共和国)", "en": "Spanish (Dominican Republic)", "value": "Español (República Dominicana)", "short": "Español"},
{"key": "es-EC", "cn": "西班牙语(厄瓜多尔)", "en": "Spanish (Ecuador)", "value": "Español (Ecuador)", "short": "Español"},
{"key": "es-ES", "cn": "西班牙语(西班牙)", "en": "Spanish (Spain)", "value": "Español (España)", "short": "Español"},
{"key": "es-GQ", "cn": "西班牙语(赤道几内亚)", "en": "Spanish (Equatorial Guinea)", "value": "Español (Guinea Ecuatorial)", "short": "Español"},
{"key": "es-GT", "cn": "西班牙语(危地马拉)", "en": "Spanish (Guatemala)", "value": "Español (Guatemala)", "short": "Español"},
{"key": "es-HN", "cn": "西班牙语(洪都拉斯)", "en": "Spanish (Honduras)", "value": "Español (Honduras)", "short": "Español"},
{"key": "es-MX", "cn": "西班牙语(墨西哥)", "en": "Spanish (Mexico)", "value": "Español (México)", "short": "Español"},
{"key": "es-NI", "cn": "西班牙语(尼加拉瓜)", "en": "Spanish (Nicaragua)", "value": "Español (Nicaragua)", "short": "Español"},
{"key": "es-PA", "cn": "西班牙语(巴拿马)", "en": "Spanish (Panama)", "value": "Español (Panama)", "short": "Español"},
{"key": "es-PE", "cn": "西班牙语(秘鲁)", "en": "Spanish (Peru)", "value": "Español (Perú)", "short": "Español"},
{"key": "es-PR", "cn": "西班牙语(波多黎各)", "en": "Spanish (Puerto Rico)", "value": "Español (Puerto Rico)", "short": "Español"},
{"key": "es-PY", "cn": "西班牙语(巴拉圭)", "en": "Spanish (Paraguay)", "value": "Español (Paraguay)", "short": "Español"},
{"key": "es-SV", "cn": "西班牙语(萨尔瓦多)", "en": "Spanish (El Salvador)", "value": "Español (El Salvador)", "short": "Español"},
{"key": "es-US", "cn": "西班牙语(美国)", "en": "Spanish (United States)", "value": "Español (Estados Unidos)", "short": "Español"},
{"key": "es-UY", "cn": "西班牙语(乌拉圭)", "en": "Spanish (Uruguay)", "value": "Español (Uruguay)", "short": "Español"},
{"key": "es-VE", "cn": "西班牙语(委内瑞拉)", "en": "Spanish (Venezuela)", "value": "Español (Venezuela)", "short": "Español"},
{"key": "et-EE", "cn": "爱沙尼亚语(爱沙尼亚)", "en": "Estonian (Estonia)", "value": "Eesti keel (Eesti)", "short": "Eesti keel"},
{"key": "eu-ES", "cn": "巴斯克语", "en": "Basque", "value": "Euskara", "short": "Euskara"},
{"key": "fa-IR", "cn": "波斯语(伊朗)", "en": "Persian (Iran)", "value": "فارسی (ایران)", "short": "فارسی"},
{"key": "fi-FI", "cn": "芬兰语(芬兰)", "en": "Finnish (Finland)", "value": "Suomi (Suomi)", "short": "Suomi"},
{"key": "fil-PH", "cn": "菲律宾语(菲律宾)", "en": "Filipino (Philippines)", "value": "Filipino (Pilipinas)", "short": "Filipino"},
{"key": "fr-BE", "cn": "法语(比利时)", "en": "French (Belgium)", "value": "Français (Belgique)", "short": "Français"},
{"key": "fr-CA", "cn": "法语(加拿大)", "en": "French (Canada)", "value": "Français (Canada)", "short": "Français"},
{"key": "fr-CH", "cn": "法语(瑞士)", "en": "French (Switzerland)", "value": "Français (Suisse)", "short": "Français"},
{"key": "fr-FR", "cn": "法语(法国)", "en": "French (France)", "value": "Français (France)", "short": "Français"},
{"key": "ga-IE", "cn": "爱尔兰语(爱尔兰)", "en": "Irish (Ireland)", "value": "Gaeilge (Éire)", "short": "Gaeilge"},
{"key": "gl-ES", "cn": "加利西亚语", "en": "Galician", "value": "Galego", "short": "Galego"},
{"key": "gu-IN", "cn": "古吉拉特语(印度)", "en": "Gujarati (India)", "value": "ગુજરાતી (ભારત)", "short": "ગુજરાતી"},
{"key": "he-IL", "cn": "希伯来语(以色列)", "en": "Hebrew (Israel)", "value": "עברית (ישראל)", "short": "עברית"},
{"key": "hi-IN", "cn": "印地语(印度)", "en": "Hindi (India)", "value": "हिन्दी (भारत)", "short": "हिन्दी"},
{"key": "hr-HR", "cn": "克罗地亚语(克罗地亚)", "en": "Croatian (Croatia)", "value": "Hrvatski (Hrvatska)", "short": "Hrvatski"},
{"key": "hu-HU", "cn": "匈牙利语(匈牙利)", "en": "Hungarian (Hungary)", "value": "Magyar (Magyarország)", "short": "Magyar"},
{"key": "hy-AM", "cn": "亚美尼亚语(亚美尼亚)", "en": "Armenian (Armenia)", "value": "Հայերեն (Հայաստան)", "short": "Հայերեն"},
{"key": "id-ID", "cn": "印度尼西亚语(印度尼西亚)", "en": "Indonesian (Indonesia)", "value": "Bahasa Indonesia (Indonesia)", "short": "Bahasa Indonesia"},
{"key": "is-IS", "cn": "冰岛语(冰岛)", "en": "Icelandic (Iceland)", "value": "Íslenska (Ísland)", "short": "Íslenska"},
{"key": "it-CH", "cn": "意大利语(瑞士)", "en": "Italian (Switzerland)", "value": "Italiano (Svizzera)", "short": "Italiano"},
{"key": "it-IT", "cn": "意大利语(意大利)", "en": "Italian (Italy)", "value": "Italiano (Italia)", "short": "Italiano"},
{"key": "ja-JP", "cn": "日语(日本)", "en": "Japanese (Japan)", "value": "日本語 (日本)", "short": "日本語"},
{"key": "jv-ID", "cn": "爪哇语(拉丁语、印度尼西亚)", "en": "Javanese (Latin, Indonesia)", "value": " basa Jawa (Latin, Indonesia)", "short": "basa Jawa"},
{"key": "ka-GE", "cn": "格鲁吉亚语(格鲁吉亚)", "en": "Georgian (Georgia)", "value": "ქართული (საქართველო)", "short": "ქართული"},
{"key": "kk-KZ", "cn": "哈萨克语(哈萨克斯坦)", "en": "Kazakh (Kazakhstan)", "value": "Қазақша (Қазақстан)", "short": "Қазақша"},
{"key": "km-KH", "cn": "高棉语(柬埔寨)", "en": "Khmer (Cambodia)", "value": "ខ្មែរ (កម្ពុជា)", "short": "ខ្មែរ"},
{"key": "kn-IN", "cn": "卡纳达语(印度)", "en": "Kannada (India)", "value": "ಕನ್ನಡ (ಭಾರತ)", "short": "ಕನ್ನಡ"},
{"key": "ko-KR", "cn": "韩语(韩国)", "en": "Korean (South Korea)", "value": "한국어 (대한민국)", "short": "한국어"},
{"key": "lo-LA", "cn": "老挝语(老挝)", "en": "Lao (Laos)", "value": "ລາວ (ລາວ)", "short": "ລາວ"},
{"key": "lt-LT", "cn": "立陶宛语(立陶宛)", "en": "Lithuanian (Lithuania)", "value": "Lietuvių kalba (Lietuva)", "short": "Lietuvių kalba"},
{"key": "lv-LV", "cn": "拉脱维亚语 (拉脱维亚)", "en": "Latvian (Latvia)", "value": "Latviešu valoda (Latvija)", "short": "Latviešu valoda"},
{"key": "mk-MK", "cn": "马其顿语(北马其顿)", "en": "Macedonian (North Macedonia)", "value": "Македонски јазик (Северна Македонија)", "short": "Македонски јазик"},
{"key": "ml-IN", "cn": "马拉雅拉姆语(印度)", "en": "Malayalam (India)", "value": "മലയാളം (ഇന്ത്യ)", "short": "മലയാളം"},
{"key": "mn-MN", "cn": "蒙古语(蒙古)", "en": "Mongolian (Mongolia)", "value": "Монгол хэл (Монгол)", "short": "Монгол хэл"},
{"key": "mr-IN", "cn": "马拉地语(印度)", "en": "Marathi (India)", "value": "मराठी (भारत)", "short": "मराठी"},
{"key": "ms-MY", "cn": "马来语(马来西亚)", "en": "Malay (Malaysia)", "value": "Bahasa Melayu (Malaysia)", "short": "Bahasa Melayu"},
{"key": "mt-MT", "cn": "马耳他语(马耳他)", "en": "Maltese (Malta)", "value": "Malti (Malta)", "short": "Malti"},
{"key": "my-MM", "cn": "缅甸语 (缅甸)", "en": "Burmese (Myanmar)", "value": "ဗမာစာ (မြန်မာ)", "short": "ဗမာစာ"},
{"key": "nb-NO", "cn": "书面挪威语(挪威)", "en": "Norwegian Bokmål (Norway)", "value": "Norsk bokmål (Norge)", "short": "Norsk bokmål"},
{"key": "ne-NP", "cn": "尼泊尔语(尼泊尔)", "en": "Nepali (Nepal)", "value": "नेपाली (नेपाल)", "short": "नेपाली"},
{"key": "nl-BE", "cn": "荷兰语(比利时)", "en": "Dutch (Belgium)", "value": "Nederlands (België)", "short": "Nederlands"},
{"key": "nl-NL", "cn": "荷兰语(荷兰)", "en": "Dutch (Netherlands)", "value": "Nederlands (Nederland)", "short": "Nederlands"},
{"key": "pa-IN", "cn": "旁遮普语(印度)", "en": "Punjabi (India)", "value": "ਪੰਜਾਬੀ (ਭਾਰਤ)", "short": "ਪੰਜਾਬੀ"},
{"key": "pl-PL", "cn": "波兰语(波兰)", "en": "Polish (Poland)", "value": "Polski (Polska)", "short": "Polski"},
{"key": "ps-AF", "cn": "普什图语(阿富汗)", "en": "Pashto (Afghanistan)", "value": "پښتو (افغانستان)", "short": "پښتو"},
{"key": "pt-BR", "cn": "葡萄牙语(巴西)", "en": "Portuguese (Brazil)", "value": "Português (Brasil)", "short": "Português"},
{"key": "pt-PT", "cn": "葡萄牙语(葡萄牙)", "en": "Portuguese (Portugal)", "value": "Português (Portugal)", "short": "Português"},
{"key": "ro-RO", "cn": "罗马尼亚语(罗马尼亚)", "en": "Romanian (Romania)", "value": "Română (România)", "short": "Română"},
{"key": "ru-RU", "cn": "俄语(俄罗斯)", "en": "Russian (Russia)", "value": "Русский (Россия)", "short": "Русский"},
{"key": "si-LK", "cn": "僧伽罗语 (斯里兰卡)", "en": "Sinhala (Sri Lanka)", "value": "සිංහල (ශ්‍රී ලංකාව)", "short": "සිංහල"},
{"key": "sk-SK", "cn": "斯洛伐克语(斯洛伐克)", "en": "Slovak (Slovakia)", "value": "Slovenčina (Slovensko)", "short": "Slovenčina"},
{"key": "sl-SI", "cn": "斯洛文尼亚语 (斯洛文尼亚)", "en": "Slovenian (Slovenia)", "value": "Slovenščina (Slovenija)", "short": "Slovenščina"},
{"key": "so-SO", "cn": "索马里语(索马里)", "en": "Somali (Somalia)", "value": "Soomaali (Soomaaliya)", "short": "Soomaali"},
{"key": "sq-AL", "cn": "阿尔巴尼亚语(阿尔巴尼亚)", "en": "Albanian (Albania)", "value": "Shqip (Shqipëria)", "short": "Shqip"},
{"key": "sr-RS", "cn": "塞尔维亚语 (西里尔文,塞尔维亚)", "en": "Serbian (Cyrillic, Serbia)", "value": "Српски језик (ћирилица, Србија)", "short": "Српски језик"},
{"key": "sv-SE", "cn": "瑞典语(瑞典)", "en": "Swedish (Sweden)", "value": "Svenska (Sverige)", "short": "Svenska"},
{"key": "sw-KE", "cn": "斯瓦希里语 (肯尼亚)", "en": "Swahili (Kenya)", "value": "Kiswahili (Kenya)", "short": "Kiswahili"},
{"key": "sw-TZ", "cn": "斯瓦希里语(坦桑尼亚)", "en": "Swahili (Tanzania)", "value": "Kiswahili (Tanzania)", "short": "Kiswahili"},
{"key": "ta-IN", "cn": "泰米尔语(印度)", "en": "Tamil (India)", "value": "தமிழ் (இந்தியா)", "short": "தமிழ்"},
{"key": "te-IN", "cn": "泰卢固语(印度)", "en": "Telugu (India)", "value": "తెలుగు (భారతదేశం)", "short": "తెలుగు"},
{"key": "th-TH", "cn": "泰语(泰国)", "en": "Thai (Thailand)", "value": "ไทย (ประเทศไทย)", "short": "ไทย"},
{"key": "tr-TR", "cn": "土耳其语 (Türkiye)", "en": "Turkish (Türkiye)", "value": "Türkçe (Türkiye)", "short": "Türkçe"},
{"key": "uk-UA", "cn": "乌克兰语 (乌克兰)", "en": "Ukrainian (Ukraine)", "value": "Українська (Україна)", "short": "Українська"},
{"key": "ur-IN", "cn": "乌尔都语(印度)", "en": "Urdu (India)", "value": "اردو (भारत)", "short": "اردو"},
{"key": "uz-UZ", "cn": "乌兹别克语 (拉丁语,乌兹别克斯坦)", "en": "Uzbek (Latin, Uzbekistan)", "value": "Oʻzbekcha (Lotin, Oʻzbekiston)", "short": "Oʻzbekcha"},
{"key": "vi-VN", "cn": "越南语 (越南)", "en": "Vietnamese (Vietnam)", "value": "Tiếng Việt (Việt Nam)", "short": "Tiếng Việt"},
{"key": "wuu-CN", "cn": "中文(吴语,简体)", "en": "Wu Chinese (Simplified)", "value": "吴语(简体)", "short": "吴语"},
{"key": "yue-CN", "cn": "中文(粤语,简体)", "en": "Cantonese (Simplified)", "value": "粤语(简体)", "short": "粤语"},
{"key": "zh-CN", "cn": "中文(普通话,简体)", "en": "Chinese (Mandarin, Simplified)", "value": "中文(普通话,简体)", "short": "中文"},
{"key": "zh-CN-shandong", "cn": "中文(冀鲁官话,简体)", "en": "Jilu Mandarin (Simplified)", "value": "冀鲁官话(简体)", "short": "冀鲁官话"},
{"key": "zh-CN-sichuan", "cn": "中文(西南普通话,简体)", "en": "Southwest Mandarin (Simplified)", "value": "西南普通话(简体)", "short": "西南普通话"},
{"key": "zh-HK", "cn": "中文(粤语,繁体)", "en": "Cantonese (Traditional)", "value": "粤语(繁体)", "short": "粤语"},
{"key": "zh-TW", "cn": "中文(台湾普通话,繁体)", "en": "Taiwan Mandarin (Traditional)", "value": "台湾普通话(繁体)", "short": "台湾普通话"},
{"key": "zu-ZA", "cn": "祖鲁语 (南非)", "en": "Zulu (South Africa)", "value": "isiZulu (South Africa)", "short": "isiZulu"}];

const azureHotLang = [
  {"key": "zh-CN", "cn": "中文(普通话,简体)", "en": "Chinese (Mandarin, Simplified)", "value": "中文(普通话,简体)", "short": "中文"},
  {"key": "en-US","cn": "英语(美国)","en": "English (United States)", "value": "English (United States)","short": "English"},
  {"key": "pt-BR","cn": "葡萄牙语(巴西)","en": "Portuguese (Brazil)","value": "Português (Brasil)","short": "Português"},
  {"key": "ko-KR", "cn": "韩语(韩国)", "en": "Korean (South Korea)","value": "한국어 (대한민국)", "short": "한국어"},
  {"key": "ja-JP","cn": "日语(日本)", "en": "Japanese (Japan)","value": "日本語 (日本)","short": "日本語"},
  {"key": "it-CH","cn": "意大利语(瑞士)", "en": "Italian (Switzerland)","value": "Italiano (Svizzera)","short": "Italiano"},
  {"key": "fr-FR","cn": "法语(法国)","en": "French (France)","value": "Français (France)","short": "Français"},
  {"key": "es-ES", "cn": "西班牙语(西班牙)","en": "Spanish (Spain)","value": "Español (España)","short": "Español"},
  {"key": "de-DE","cn": "德语(德国)","en": "German (Germany)","value": "Deutsch (Deutschland)","short": "Deutsch"}
];

const azureDefaultLang =   {"key": "zh-CN", "cn": "中文(普通话,简体)", "en": "Chinese (Mandarin, Simplified)", "value": "中文(普通话,简体)", "short": "中文"};

觉得不错就点个赞吧,谢谢✨✨