Identifikasi bahasa (pratinjau)
Identifikasi bahasa digunakan untuk mengidentifikasi bahasa yang diucapkan dalam audio jika dibandingkan dengan daftar bahasa yang didukung.
Kasus penggunaan identifikasi bahasa (LID) meliputi:
- Identifikasi bahasa mandiri jika Anda hanya perlu mengidentifikasi bahasa dalam sumber audio.
- Pengenalan ucapan ke teks jika Anda perlu mengidentifikasi bahasa dalam sumber audio dan kemudian mentranskripsikannya ke teks.
- Terjemahan ucapan jika Anda perlu mengidentifikasi bahasa dalam sumber audio dan kemudian menerjemahkannya ke bahasa lain.
Perhatikan bahwa untuk pengenalan ucapan, latensi awal lebih tinggi dengan identifikasi bahasa. Anda hanya harus menyertakan fitur opsional ini sesuai kebutuhan.
Opsi konfigurasi
Baik Anda menggunakan identifikasi bahasa secara mandiri, dengan ucapan ke teks, atau dengan terjemahan ucapan, ada beberapa konsep umum dan opsi konfigurasi.
- Tentukan daftar bahasa kandidat yang Anda harapkan dalam audio.
- Putuskan apakah akan menggunakan identifikasi bahasa di awal atau berkelanjutan.
- Prioritaskan latensi rendah atau akurasi hasil yang tinggi.
Kemudian Anda mengenali permintaan pengenalan satu kali atau berkelanjutan ke layanan Ucapan.
Cuplikan kode disertakan dengan konsep yang dijelaskan selanjutnya. Sampel lengkap untuk setiap kasus penggunaan disediakan lebih lanjut di bawah ini.
Bahasa kandidat
Anda menyediakan bahasa kandidat, setidaknya salah satunya diharapkan ada di audio. Anda dapat menyertakan hingga 4 bahasa untuk LID di awal atau hingga 10 bahasa untuk LID berkelanjutan.
Anda harus menyediakan lokal 4 huruf penuh, tetapi identifikasi bahasa hanya menggunakan satu lokal per bahasa dasar. Jangan sertakan beberapa lokal (misalnya, "en-US" dan "en-GB") untuk bahasa yang sama.
var autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig.FromLanguages(new string[] { "en-US", "de-DE", "zh-CN" });
auto autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig::FromLanguages({ "en-US", "de-DE", "zh-CN" });
auto_detect_source_language_config = \
speechsdk.languageconfig.AutoDetectSourceLanguageConfig(languages=["en-US", "de-DE", "zh-CN"])
AutoDetectSourceLanguageConfig autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig.fromLanguages(Arrays.asList("en-US", "de-DE", "zh-CN"));
var autoDetectSourceLanguageConfig = SpeechSDK.AutoDetectSourceLanguageConfig.fromLanguages([("en-US", "de-DE", "zh-CN"]);
NSArray *languages = @[@"en-US", @"de-DE", @"zh-CN"];
SPXAutoDetectSourceLanguageConfiguration* autoDetectSourceLanguageConfig = \
[[SPXAutoDetectSourceLanguageConfiguration alloc]init:languages];
Untuk informasi selengkapnya, lihat bahasa yang didukung.
Identifikasi bahasa Di Awal dan Berkelanjutan
Ucapan mendukung identifikasi bahasa (LID) di awal dan berkelanjutan.
Catatan
Identifikasi bahasa berkelanjutan hanya didukung dengan SDK Azure Cognitive Service untuk Ucapan di C#, C++, Java (hanya untuk ucapan ke teks), dan Python.
- LID di awal mengidentifikasi bahasa satu kali dalam beberapa detik pertama audio. Gunakan LID di awal jika bahasa dalam audio tidak akan berubah.
- LID berkelanjutan dapat mengidentifikasi beberapa bahasa selama durasi audio. Gunakan LID berkelanjutan jika bahasa dalam audio dapat berubah. LID berkelanjutan tidak mendukung perubahan bahasa dalam kalimat yang sama. Misalnya, jika Anda terutama berbicara bahasa Spanyol dan menyisipkan beberapa kata bahasa Inggris, itu tidak akan mendeteksi perubahan bahasa per kata.
Anda menerapkan LID di awal atau LID berkelanjutan dengan memanggil metode untuk mengenali satu kali atau berkelanjutan. Hasil juga bergantung pada Aturan prioritas Akurasi dan Latensi Anda.
Aturan prioritas Akurasi dan Latensi
Anda dapat memilih untuk memprioritaskan akurasi atau latensi dengan identifikasi bahasa.
Catatan
Latensi diprioritaskan secara default dengan SDK Ucapan. Anda dapat memilih untuk memprioritaskan akurasi atau latensi dengan SDK Azure Cognitive Service untuk Ucapan untuk C#, C++, Java (hanya untuk ucapan ke teks), dan Python.
Prioritaskan Latency jika Anda memerlukan hasil latensi rendah seperti saat streaming langsung. Atur prioritas ke Accuracy jika kualitas audio mungkin buruk, dan latensi lebih dapat diterima. Misalnya, pesan suara bisa memiliki kebisingan latar belakang, atau beberapa keheningan di awal. Memberikan mesin lebih banyak waktu akan meningkatkan hasil identifikasi bahasa.
- Di awal: Dengan LID di awal dalam mode
Latency, hasilnya dikembalikan dalam waktu kurang dari 5 detik. Dengan LID di awal dalam modeAccuracy, hasilnya dikembalikan dalam waktu 30 detik. Anda menetapkan prioritas untuk LID di awal dengan propertiSpeechServiceConnection_SingleLanguageIdPriority. - Berkelanjutan: Dengan LID berkelanjutan dalam mode
Latency, hasilnya dikembalikan setiap 2 detik selama durasi audio. Dengan LID berkelanjutan dalam modeAccuracy, hasilnya dikembalikan tanpa jangka waktu yang ditetapkan selama durasi audio. Anda menetapkan prioritas untuk LID berkelanjutan dengan propertiSpeechServiceConnection_ContinuousLanguageIdPriority.
Penting
Dengan pengenalan berkelanjutan ucapan ke teks dan terjemahan ucapan, jangan atur Accuracydengan properti SpeechServiceConnection_ContinuousLanguageIdPriority. Pengaturan akan diabaikan tanpa kesalahan, dan prioritas Latency default akan tetap berlaku. Hanya identifikasi bahasa mandiri yang mendukung LID berkelanjutan dengan aturan prioritas Accuracy.
Ucapan menggunakan LID di awal dengan aturan prioritas Latency secara default. Anda perlu menetapkan properti prioritas untuk konfigurasi LID lainnya.
Berikut adalah contoh menggunakan LID berkelanjutan sambil tetap memprioritaskan latensi.
speechConfig.SetProperty(PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, "Latency");
Berikut adalah contoh menggunakan LID berkelanjutan sambil tetap memprioritaskan latensi.
speechConfig->SetProperty(PropertyId::SpeechServiceConnection_ContinuousLanguageIdPriority, "Latency");
Berikut adalah contoh menggunakan LID berkelanjutan sambil tetap memprioritaskan latensi.
speechConfig.setProperty(PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, "Latency");
Berikut adalah contoh menggunakan LID berkelanjutan sambil tetap memprioritaskan latensi.
speech_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, value='Latency')
Saat memprioritaskan Latency, layanan Ucapan mengembalikan salah satu bahasa kandidat yang disediakan bahkan jika bahasa tersebut tidak ada dalam audio. Misalnya, jika fr-FR (Prancis) dan en-US (Inggris) disediakan sebagai kandidat, tetapi bahasa Jerman diucapkan, baik fr-FR atau en-US akan dikembalikan. Saat memprioritaskan Accuracy, layanan Ucapan akan mengembalikan string Unknown sebagai bahasa yang terdeteksi jika tidak ada bahasa kandidat yang terdeteksi atau jika keyakinan identifikasi bahasa rendah.
Catatan
Anda mungkin melihat kasus di mana string kosong akan dikembalikan, bukan Unknown, karena ketidakkonsistenan layanan Ucapan.
Saat catatan ini ada, aplikasi harus memeriksa kasus Unknown dan string kosong dan memperlakukan mereka secara identik.
Mengenali satu kali atau berkelanjutan
Identifikasi bahasa dilengkapi dengan objek dan operasi pengenalan. Anda akan mengajukan permintaan ke layanan Ucapan untuk pengenalan audio.
Catatan
Jangan bingung antara pengenalan dengan identifikasi. Pengakuan dapat digunakan dengan atau tanpa identifikasi bahasa. Mari kita petakan konsep-konsep ini ke kode. Anda akan memanggil metode kenali satu kali, atau memulai dan menghentikan metode pengenalan berkelanjutan. Anda memilih dari:
- Kenali satu kali dengan LID di awal
- Pengenalan berkelanjutan dengan LID di awal
- Pengenalan berkelanjutan dengan LID berkelanjutan
Properti SpeechServiceConnection_ContinuousLanguageIdPriority selalu diperlukan untuk LID berkelanjutan. Tanpa itu layanan ucapan diatur secara default ke lid di awal.
// Recognize once with At-start LID
var result = await recognizer.RecognizeOnceAsync();
// Start and stop continuous recognition with At-start LID
await recognizer.StartContinuousRecognitionAsync();
await recognizer.StopContinuousRecognitionAsync();
// Start and stop continuous recognition with Continuous LID
speechConfig.SetProperty(PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, "Latency");
await recognizer.StartContinuousRecognitionAsync();
await recognizer.StopContinuousRecognitionAsync();
// Recognize once with At-start LID
auto result = recognizer->RecognizeOnceAsync().get();
// Start and stop continuous recognition with At-start LID
recognizer->StartContinuousRecognitionAsync().get();
recognizer->StopContinuousRecognitionAsync().get();
// Start and stop continuous recognition with Continuous LID
speechConfig->SetProperty(PropertyId::SpeechServiceConnection_ContinuousLanguageIdPriority, "Latency");
recognizer->StartContinuousRecognitionAsync().get();
recognizer->StopContinuousRecognitionAsync().get();
// Recognize once with At-start LID
SpeechRecognitionResult result = recognizer->RecognizeOnceAsync().get();
// Start and stop continuous recognition with At-start LID
recognizer.startContinuousRecognitionAsync().get();
recognizer.stopContinuousRecognitionAsync().get();
// Start and stop continuous recognition with Continuous LID
speechConfig.setProperty(PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, "Latency");
recognizer.startContinuousRecognitionAsync().get();
recognizer.stopContinuousRecognitionAsync().get();
# Recognize once with At-start LID
result = recognizer.recognize_once()
# Start and stop continuous recognition with At-start LID
recognizer.start_continuous_recognition()
recognizer.stop_continuous_recognition()
# Start and stop continuous recognition with Continuous LID
speech_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_ContinuousLanguageIdPriority, value='Latency')
recognizer.start_continuous_recognition()
recognizer.stop_continuous_recognition()
Identifikasi bahasa mandiri
Anda menggunakan identifikasi bahasa mandiri saat Anda hanya perlu mengidentifikasi bahasa dalam sumber audio.
Catatan
Identifikasi bahasa sumber mandiri hanya didukung dengan SDK Ucapan untuk C#, C++, dan Python.
Lihat lebih banyak contoh identifikasi bahasa mandiri di GitHub.
// Creates an instance of a speech config with specified subscription key and service region.
// Replace with your own subscription key and service region (e.g., "westus").
var config = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");
// Single-Shot with Accuracy
// Please refer to the documentation of language id with different modes
config.SetProperty(PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, "Accuracy");
// Creates a speech recognizer using file as audio input.
// Replace with your own audio file name.
using (var audioInput = AudioConfig.FromWavFileInput(@"LanguageDetection_enUS.wav"))
{
using (var recognizer = new SourceLanguageRecognizer(config, autoDetectSourceLanguageConfig, audioInput))
{
// Starts recognizing.
Console.WriteLine("Say something...");
// Starts language detection, and returns after a single utterance is recognized.
// The task returns the recognition text as result.
// Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
// shot detection like command or query.
// For long-running multi-utterance detection, use StartContinuousRecognitionAsync() instead.
var result = await recognizer.RecognizeOnceAsync().ConfigureAwait(false);
// Checks result.
if (result.Reason == ResultReason.RecognizedSpeech)
{
var lidResult = AutoDetectSourceLanguageResult.FromResult(result);
Console.WriteLine($"DETECTED: Language={lidResult.Language}");
}
else if (result.Reason == ResultReason.NoMatch)
{
Console.WriteLine($"NOMATCH: Speech could not be recognized.");
}
else if (result.Reason == ResultReason.Canceled)
{
var cancellation = CancellationDetails.FromResult(result);
Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");
if (cancellation.Reason == CancellationReason.Error)
{
Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
Console.WriteLine($"CANCELED: Did you update the subscription info?");
}
}
}
}
Lihat lebih banyak contoh identifikasi bahasa mandiri di GitHub.
// Creates an instance of a speech config with specified subscription key and service region.
// Replace with your own subscription key and service region (e.g., "westus").
auto config = SpeechConfig::FromSubscription("YourSubscriptionKey", "YourServiceRegion");
// Language Id feature requirement
// Please refer to language id document for different modes
config->SetProperty(PropertyId::SpeechServiceConnection_SingleLanguageIdPriority, "Latency");
auto autoDetectSourceLanguageConfig = AutoDetectSourceLanguageConfig::FromLanguages({ "en-US", "de-DE" });
// Creates a speech recognizer using microphone as audio input. The default language is "en-us".
auto recognizer = SourceLanguageRecognizer::FromConfig(config, autoDetectSourceLanguageConfig);
cout << "Say something...\n";
// Starts Standalone language detection, and returns after a single utterance is recognized. The end of a
// single utterance is determined by listening for silence at the end or until a maximum of 15
// seconds of audio is processed. The task returns the recognition text as result.
// Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
// shot recognition like command or query.
// For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
auto result = recognizer->RecognizeOnceAsync().get();
// Checks result.
if (result->Reason == ResultReason::RecognizedSpeech)
{
auto lidResult = AutoDetectSourceLanguageResult::FromResult(result);
cout << "RECOGNIZED in "<< lidResult->Language << std::endl;
}
else if (result->Reason == ResultReason::NoMatch)
{
cout << "NOMATCH: Speech could not be recognized." << std::endl;
}
else if (result->Reason == ResultReason::Canceled)
{
auto cancellation = CancellationDetails::FromResult(result);
cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
if (cancellation->Reason == CancellationReason::Error)
{
cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
cout << "CANCELED: Did you update the subscription info?" << std::endl;
}
}
Lihat lebih banyak contoh identifikasi bahasa mandiri di GitHub.
# Creates an AutoDetectSourceLanguageConfig, which defines a number of possible spoken languages
auto_detect_source_language_config = \
speechsdk.languageconfig.AutoDetectSourceLanguageConfig(languages=["de-DE", "en-US"])
# Creates a SpeechConfig from your speech key and region
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)
# Sets the Priority (optional, defaults to 'Latency'). Either 'Latency' or 'Accuracy' is accepted.
speech_config.set_property(
property_id=speechsdk.PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, value='Latency')
audio_config = speechsdk.audio.AudioConfig(filename=single_language_wav_file)
# Creates a source language recognizer using a file as audio input, also specify the speech language
source_language_recognizer = speechsdk.SourceLanguageRecognizer(
speech_config=speech_config,
auto_detect_source_language_config=auto_detect_source_language_config,
audio_config=audio_config)
# Starts speech language detection, and returns after a single utterance is recognized. The end of a
# single utterance is determined by listening for silence at the end or until a maximum of 15
# seconds of audio is processed. It returns the detection text as result.
# Note: Since recognize_once() returns only a single utterance, it is suitable only for single
# shot detection like command or query.
# For long-running multi-utterance detection, use start_continuous_recognition() instead.
result = source_language_recognizer.recognize_once()
# Check the result
if result.reason == speechsdk.ResultReason.RecognizedSpeech:
print("RECOGNIZED: {}".format(result))
detected_src_lang = result.properties[
speechsdk.PropertyId.SpeechServiceConnection_AutoDetectSourceLanguageResult]
print("Detected Language: {}".format(detected_src_lang))
elif result.reason == speechsdk.ResultReason.NoMatch:
print("No speech could be recognized: {}".format(result.no_match_details))
elif result.reason == speechsdk.ResultReason.Canceled:
cancellation_details = result.cancellation_details
print("Speech Language Detection canceled: {}".format(cancellation_details.reason))
if cancellation_details.reason == speechsdk.CancellationReason.Error:
print("Error details: {}".format(cancellation_details.error_details))
Ucapan-ke-Teks
Anda menggunakan pengenalan Ucapan ke teks saat Anda perlu mengidentifikasi bahasa dalam sumber audio dan kemudian mentranskripsikannya ke teks. Untuk informasi selengkapnya, lihat Ringkasan ucapan ke teks.
Catatan
Pengenalan ucapan ke teks dengan identifikasi bahasa di awal didukung dengan SDK Ucapan di C#, C++, Python, Java, JavaScript, dan Objective-C. Pengenalan ucapan ke teks dengan identifikasi bahasa berkelanjutan hanya didukung dengan SDK Azure Cognitive Service untuk Ucapan di C#, C++, Java, dan Python.
Saat ini untuk pengenalan ucapan ke teks dengan identifikasi bahasa berkelanjutan, Anda harus membuat SpeechConfig dari wss://{region}.stt.speech.microsoft.com/speech/universal/v2 string titik akhir, seperti yang ditunjukkan dalam contoh kode. Dalam rilis SDK mendatang, Anda tidak perlu mengaturnya.
Lihat lebih banyak contoh pengenalan ucapan ke teks dengan identifikasi bahasa di GitHub.
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey","YourServiceRegion");
speechConfig.SetProperty(PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, "Latency");
var autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig.FromLanguages(
new string[] { "en-US", "de-DE", "zh-CN" });
using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
using (var recognizer = new SpeechRecognizer(
speechConfig,
autoDetectSourceLanguageConfig,
audioConfig))
{
var speechRecognitionResult = await recognizer.RecognizeOnceAsync();
var autoDetectSourceLanguageResult =
AutoDetectSourceLanguageResult.FromResult(speechRecognitionResult);
var detectedLanguage = autoDetectSourceLanguageResult.Language;
}
Lihat lebih banyak contoh pengenalan ucapan ke teks dengan identifikasi bahasa di GitHub.
using namespace std;
using namespace Microsoft::CognitiveServices::Speech;
using namespace Microsoft::CognitiveServices::Speech::Audio;
auto speechConfig = SpeechConfig::FromSubscription("YourSubscriptionKey","YourServiceRegion");
speechConfig->SetProperty(PropertyId::SpeechServiceConnection_SingleLanguageIdPriority, "Latency");
auto autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig::FromLanguages({ "en-US", "de-DE", "zh-CN" });
auto recognizer = SpeechRecognizer::FromConfig(
speechConfig,
autoDetectSourceLanguageConfig
);
speechRecognitionResult = recognizer->RecognizeOnceAsync().get();
auto autoDetectSourceLanguageResult =
AutoDetectSourceLanguageResult::FromResult(speechRecognitionResult);
auto detectedLanguage = autoDetectSourceLanguageResult->Language;
Lihat lebih banyak contoh pengenalan ucapan ke teks dengan identifikasi bahasa di GitHub.
AutoDetectSourceLanguageConfig autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig.fromLanguages(Arrays.asList("en-US", "de-DE"));
SpeechRecognizer recognizer = new SpeechRecognizer(
speechConfig,
autoDetectSourceLanguageConfig,
audioConfig);
Future<SpeechRecognitionResult> future = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = future.get(30, TimeUnit.SECONDS);
AutoDetectSourceLanguageResult autoDetectSourceLanguageResult =
AutoDetectSourceLanguageResult.fromResult(result);
String detectedLanguage = autoDetectSourceLanguageResult.getLanguage();
recognizer.close();
speechConfig.close();
autoDetectSourceLanguageConfig.close();
audioConfig.close();
result.close();
Lihat lebih banyak contoh pengenalan ucapan ke teks dengan identifikasi bahasa di GitHub.
auto_detect_source_language_config = \
speechsdk.languageconfig.AutoDetectSourceLanguageConfig(languages=["en-US", "de-DE"])
speech_recognizer = speechsdk.SpeechRecognizer(
speech_config=speech_config,
auto_detect_source_language_config=auto_detect_source_language_config,
audio_config=audio_config)
result = speech_recognizer.recognize_once()
auto_detect_source_language_result = speechsdk.AutoDetectSourceLanguageResult(result)
detected_language = auto_detect_source_language_result.language
NSArray *languages = @[@"en-US", @"de-DE", @"zh-CN"];
SPXAutoDetectSourceLanguageConfiguration* autoDetectSourceLanguageConfig = \
[[SPXAutoDetectSourceLanguageConfiguration alloc]init:languages];
SPXSpeechRecognizer* speechRecognizer = \
[[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig
autoDetectSourceLanguageConfiguration:autoDetectSourceLanguageConfig
audioConfiguration:audioConfig];
SPXSpeechRecognitionResult *result = [speechRecognizer recognizeOnce];
SPXAutoDetectSourceLanguageResult *languageDetectionResult = [[SPXAutoDetectSourceLanguageResult alloc] init:result];
NSString *detectedLanguage = [languageDetectionResult language];
var autoDetectSourceLanguageConfig = SpeechSDK.AutoDetectSourceLanguageConfig.fromLanguages(["en-US", "de-DE"]);
var speechRecognizer = SpeechSDK.SpeechRecognizer.FromConfig(speechConfig, autoDetectSourceLanguageConfig, audioConfig);
speechRecognizer.recognizeOnceAsync((result: SpeechSDK.SpeechRecognitionResult) => {
var languageDetectionResult = SpeechSDK.AutoDetectSourceLanguageResult.fromResult(result);
var detectedLanguage = languageDetectionResult.language;
},
{});
Menggunakan model kustom Ucapan ke teks
Sampel ini menunjukkan cara menggunakan deteksi bahasa dengan titik akhir kustom. Jika bahasa yang terdeteksi adalah en-US, maka model default digunakan. Jika bahasa yang terdeteksi adalah fr-FR, maka titik akhir model kustom digunakan. Untuk informasi selengkapnya, lihat Menyebarkan model Ucapan Kustom.
var sourceLanguageConfigs = new SourceLanguageConfig[]
{
SourceLanguageConfig.FromLanguage("en-US"),
SourceLanguageConfig.FromLanguage("fr-FR", "The Endpoint Id for custom model of fr-FR")
};
var autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig.FromSourceLanguageConfigs(
sourceLanguageConfigs);
Sampel ini menunjukkan cara menggunakan deteksi bahasa dengan titik akhir kustom. Jika bahasa yang terdeteksi adalah en-US, maka model default digunakan. Jika bahasa yang terdeteksi adalah fr-FR, maka titik akhir model kustom digunakan. Untuk informasi selengkapnya, lihat Menyebarkan model Ucapan Kustom.
std::vector<std::shared_ptr<SourceLanguageConfig>> sourceLanguageConfigs;
sourceLanguageConfigs.push_back(
SourceLanguageConfig::FromLanguage("en-US"));
sourceLanguageConfigs.push_back(
SourceLanguageConfig::FromLanguage("fr-FR", "The Endpoint Id for custom model of fr-FR"));
auto autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig::FromSourceLanguageConfigs(
sourceLanguageConfigs);
Sampel ini menunjukkan cara menggunakan deteksi bahasa dengan titik akhir kustom. Jika bahasa yang terdeteksi adalah en-US, maka model default digunakan. Jika bahasa yang terdeteksi adalah fr-FR, maka titik akhir model kustom digunakan. Untuk informasi selengkapnya, lihat Menyebarkan model Ucapan Kustom.
List sourceLanguageConfigs = new ArrayList<SourceLanguageConfig>();
sourceLanguageConfigs.add(
SourceLanguageConfig.fromLanguage("en-US"));
sourceLanguageConfigs.add(
SourceLanguageConfig.fromLanguage("fr-FR", "The Endpoint Id for custom model of fr-FR"));
AutoDetectSourceLanguageConfig autoDetectSourceLanguageConfig =
AutoDetectSourceLanguageConfig.fromSourceLanguageConfigs(
sourceLanguageConfigs);
Sampel ini menunjukkan cara menggunakan deteksi bahasa dengan titik akhir kustom. Jika bahasa yang terdeteksi adalah en-US, maka model default digunakan. Jika bahasa yang terdeteksi adalah fr-FR, maka titik akhir model kustom digunakan. Untuk informasi selengkapnya, lihat Menyebarkan model Ucapan Kustom.
en_language_config = speechsdk.languageconfig.SourceLanguageConfig("en-US")
fr_language_config = speechsdk.languageconfig.SourceLanguageConfig("fr-FR", "The Endpoint Id for custom model of fr-FR")
auto_detect_source_language_config = speechsdk.languageconfig.AutoDetectSourceLanguageConfig(
sourceLanguageConfigs=[en_language_config, fr_language_config])
Sampel ini menunjukkan cara menggunakan deteksi bahasa dengan titik akhir kustom. Jika bahasa yang terdeteksi adalah en-US, maka model default digunakan. Jika bahasa yang terdeteksi adalah fr-FR, maka titik akhir model kustom digunakan. Untuk informasi selengkapnya, lihat Menyebarkan model Ucapan Kustom.
SPXSourceLanguageConfiguration* enLanguageConfig = [[SPXSourceLanguageConfiguration alloc]init:@"en-US"];
SPXSourceLanguageConfiguration* frLanguageConfig = \
[[SPXSourceLanguageConfiguration alloc]initWithLanguage:@"fr-FR"
endpointId:@"The Endpoint Id for custom model of fr-FR"];
NSArray *languageConfigs = @[enLanguageConfig, frLanguageConfig];
SPXAutoDetectSourceLanguageConfiguration* autoDetectSourceLanguageConfig = \
[[SPXAutoDetectSourceLanguageConfiguration alloc]initWithSourceLanguageConfigurations:languageConfigs];
Deteksi bahasa dengan titik akhir kustom tidak didukung oleh SDK Ucapan untuk JavaScript. Misalnya, jika Anda menyertakan "fr-FR" seperti yang ditunjukkan di sini, titik akhir kustom akan diabaikan.
var enLanguageConfig = SpeechSDK.SourceLanguageConfig.fromLanguage("en-US");
var frLanguageConfig = SpeechSDK.SourceLanguageConfig.fromLanguage("fr-FR", "The Endpoint Id for custom model of fr-FR");
var autoDetectSourceLanguageConfig = SpeechSDK.AutoDetectSourceLanguageConfig.fromSourceLanguageConfigs([enLanguageConfig, frLanguageConfig]);
Terjemahan Ucapan
Anda menggunakan terjemahan Ucapan saat Anda perlu mengidentifikasi bahasa dalam sumber audio dan kemudian menerjemahkannya ke bahasa lain. Untuk informasi selengkapnya, lihat Ringkasan terjemahan ucapan.
Catatan
Terjemahan ucapan dengan identifikasi bahasa hanya didukung dengan SDK Ucapan di C#, C++, dan Python.
Saat ini untuk terjemahan ucapan dengan identifikasi bahasa, Anda harus membuat SpeechConfig dari wss://{region}.stt.speech.microsoft.com/speech/universal/v2 string titik akhir, seperti yang ditunjukkan dalam contoh kode. Dalam rilis SDK mendatang, Anda tidak perlu mengaturnya.
Lihat lebih banyak contoh terjemahan ucapan dengan identifikasi bahasa di GitHub.
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
using Microsoft.CognitiveServices.Speech.Translation;
public static async Task RecognizeOnceSpeechTranslationAsync()
{
var region = "YourServiceRegion";
// Currently the v2 endpoint is required. In a future SDK release you won't need to set it.
var endpointString = $"wss://{region}.stt.speech.microsoft.com/speech/universal/v2";
var endpointUrl = new Uri(endpointString);
var config = SpeechTranslationConfig.FromEndpoint(endpointUrl, "YourSubscriptionKey");
speechTranslationConfig.SetProperty(PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, "Latency");
// Source language is required, but currently ignored.
string fromLanguage = "en-US";
speechTranslationConfig.SpeechRecognitionLanguage = fromLanguage;
speechTranslationConfig.AddTargetLanguage("de");
speechTranslationConfig.AddTargetLanguage("fr");
var autoDetectSourceLanguageConfig = AutoDetectSourceLanguageConfig.FromLanguages(new string[] { "en-US", "de-DE", "zh-CN" });
using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
using (var recognizer = new TranslationRecognizer(
speechTranslationConfig,
autoDetectSourceLanguageConfig,
audioConfig))
{
Console.WriteLine("Say something or read from file...");
var result = await recognizer.RecognizeOnceAsync().ConfigureAwait(false);
if (result.Reason == ResultReason.TranslatedSpeech)
{
var lidResult = result.Properties.GetProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguageResult);
Console.WriteLine($"RECOGNIZED in '{lidResult}': Text={result.Text}");
foreach (var element in result.Translations)
{
Console.WriteLine($" TRANSLATED into '{element.Key}': {element.Value}");
}
}
}
}
Lihat lebih banyak contoh terjemahan ucapan dengan identifikasi bahasa di GitHub.
auto region = "YourServiceRegion";
// Currently the v2 endpoint is required. In a future SDK release you won't need to set it.
auto endpointString = std::format("wss://{}.stt.speech.microsoft.com/speech/universal/v2", region);
auto config = SpeechTranslationConfig::FromEndpoint(endpointString, "YourSubscriptionKey");
// Language Id feature requirement
// Please refer to language id document for different modes
config->SetProperty(PropertyId::SpeechServiceConnection_SingleLanguageIdPriority, "Latency");
auto autoDetectSourceLanguageConfig = AutoDetectSourceLanguageConfig::FromLanguages({ "en-US", "de-DE" });
// Sets source and target languages
// The source language will be detected by the language detection feature.
// However, the SpeechRecognitionLanguage still need to set with a locale string, but it will not be used as the source language.
// This will be fixed in a future version of Speech SDK.
auto fromLanguage = "en-US";
config->SetSpeechRecognitionLanguage(fromLanguage);
config->AddTargetLanguage("de");
config->AddTargetLanguage("fr");
// Creates a translation recognizer using microphone as audio input.
auto recognizer = TranslationRecognizer::FromConfig(config, autoDetectSourceLanguageConfig);
cout << "Say something...\n";
// Starts translation, and returns after a single utterance is recognized. The end of a
// single utterance is determined by listening for silence at the end or until a maximum of 15
// seconds of audio is processed. The task returns the recognized text as well as the translation.
// Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
// shot recognition like command or query.
// For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
auto result = recognizer->RecognizeOnceAsync().get();
// Checks result.
if (result->Reason == ResultReason::TranslatedSpeech)
{
cout << "RECOGNIZED: Text=" << result->Text << std::endl;
for (const auto& it : result->Translations)
{
cout << "TRANSLATED into '" << it.first.c_str() << "': " << it.second.c_str() << std::endl;
}
}
else if (result->Reason == ResultReason::RecognizedSpeech)
{
cout << "RECOGNIZED: Text=" << result->Text << " (text could not be translated)" << std::endl;
}
else if (result->Reason == ResultReason::NoMatch)
{
cout << "NOMATCH: Speech could not be recognized." << std::endl;
}
else if (result->Reason == ResultReason::Canceled)
{
auto cancellation = CancellationDetails::FromResult(result);
cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
if (cancellation->Reason == CancellationReason::Error)
{
cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
cout << "CANCELED: Did you set the speech resource key and region values?" << std::endl;
}
}
Lihat lebih banyak contoh terjemahan ucapan dengan identifikasi bahasa di GitHub.
import azure.cognitiveservices.speech as speechsdk
import time
import json
speech_key, service_region = "YourSubscriptionKey","YourServiceRegion"
weatherfilename="en-us_zh-cn.wav"
# set up translation parameters: source language and target languages
# Currently the v2 endpoint is required. In a future SDK release you won't need to set it.
endpoint_string = "wss://{}.stt.speech.microsoft.com/speech/universal/v2".format(service_region)
translation_config = speechsdk.translation.SpeechTranslationConfig(
subscription=speech_key,
endpoint=endpoint_string,
speech_recognition_language='en-US',
target_languages=('de', 'fr'))
audio_config = speechsdk.audio.AudioConfig(filename=weatherfilename)
# Set the Priority (optional, default Latency, either Latency or Accuracy is accepted)
translation_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, value='Accuracy')
# Specify the AutoDetectSourceLanguageConfig, which defines the number of possible languages
auto_detect_source_language_config = speechsdk.languageconfig.AutoDetectSourceLanguageConfig(languages=["en-US", "de-DE", "zh-CN"])
# Creates a translation recognizer using and audio file as input.
recognizer = speechsdk.translation.TranslationRecognizer(
translation_config=translation_config,
audio_config=audio_config,
auto_detect_source_language_config=auto_detect_source_language_config)
# Starts translation, and returns after a single utterance is recognized. The end of a
# single utterance is determined by listening for silence at the end or until a maximum of 15
# seconds of audio is processed. The task returns the recognition text as result.
# Note: Since recognize_once() returns only a single utterance, it is suitable only for single
# shot recognition like command or query.
# For long-running multi-utterance recognition, use start_continuous_recognition() instead.
result = recognizer.recognize_once()
# Check the result
if result.reason == speechsdk.ResultReason.TranslatedSpeech:
print("""Recognized: {}
German translation: {}
French translation: {}""".format(
result.text, result.translations['de'], result.translations['fr']))
elif result.reason == speechsdk.ResultReason.RecognizedSpeech:
print("Recognized: {}".format(result.text))
detectedSrcLang = result.properties[speechsdk.PropertyId.SpeechServiceConnection_AutoDetectSourceLanguageResult]
print("Detected Language: {}".format(detectedSrcLang))
elif result.reason == speechsdk.ResultReason.NoMatch:
print("No speech could be recognized: {}".format(result.no_match_details))
elif result.reason == speechsdk.ResultReason.Canceled:
print("Translation canceled: {}".format(result.cancellation_details.reason))
if result.cancellation_details.reason == speechsdk.CancellationReason.Error:
print("Error details: {}".format(result.cancellation_details.error_details))