Menggunakan penilaian pengucapan
Dalam artikel ini, Anda mempelajari cara mengevaluasi pengucapan dengan ucapan ke teks melalui Speech SDK. Penilaian pengucapan mengevaluasi pengucapan ucapan dan memberikan umpan balik kepada pembicara tentang keakuratan dan kefasihan audio lisan.
Catatan
Penilaian pengucapan menggunakan versi tertentu dari model ucapan ke teks, berbeda dari model ucapan ke teks standar, untuk memastikan penilaian pengucapan yang konsisten dan akurat.
Menggunakan penilaian pengucapan dalam mode streaming
Penilaian pengucapan mendukung mode streaming tanpa gangguan. Waktu perekaman dapat tidak terbatas melalui Speech SDK. Selama Anda tidak berhenti merekam, proses evaluasi tidak selesai dan Anda dapat menjeda dan melanjutkan evaluasi dengan nyaman.
Untuk informasi tentang ketersediaan penilaian pengucapan, lihat bahasa yang didukung dan wilayah yang tersedia.
Sebagai garis besar, penggunaan biaya penilaian pengucapan sama dengan ucapan ke teks untuk harga tingkat bayar sesuai penggunaan atau komitmen. Jika Anda membeli tingkat komitmen untuk ucapan ke teks, pengeluaran untuk penilaian pengucapan akan memenuhi komitmen. Untuk informasi selengkapnya, lihat Harga.
Untuk cara menggunakan Penilaian Pengucapan dalam mode streaming di aplikasi Anda sendiri, lihat kode sampel.
Untuk cara menggunakan Penilaian Pengucapan dalam mode streaming di aplikasi Anda sendiri, lihat kode sampel.
Untuk cara menggunakan Penilaian Pengucapan dalam mode streaming di aplikasi Anda sendiri, lihat kode sampel.
Untuk cara menggunakan Penilaian Pengucapan dalam mode streaming di aplikasi Anda sendiri, lihat kode sampel.
Untuk cara menggunakan Penilaian Pengucapan dalam mode streaming di aplikasi Anda sendiri, lihat kode sampel.
Untuk cara menggunakan Penilaian Pengucapan dalam mode streaming di aplikasi Anda sendiri, lihat kode sampel.
Untuk cara menggunakan Penilaian Pengucapan dalam mode streaming di aplikasi Anda sendiri, lihat kode sampel.
Pengenalan berkelanjutan
Jika file audio Anda melebihi 30 detik, gunakan mode berkelanjutan untuk pemrosesan. Kode sampel untuk mode berkelanjutan dapat ditemukan di GitHub di bawah fungsi PronunciationAssessmentContinuousWithFile
.
Jika file audio Anda melebihi 30 detik, gunakan mode berkelanjutan untuk pemrosesan.
Jika file audio Anda melebihi 30 detik, gunakan mode berkelanjutan untuk pemrosesan. Kode sampel untuk mode berkelanjutan dapat ditemukan di GitHub di bawah fungsi pronunciationAssessmentContinuousWithFile
.
Jika file audio Anda melebihi 30 detik, gunakan mode berkelanjutan untuk pemrosesan. Kode sampel untuk mode berkelanjutan dapat ditemukan di GitHub di bawah fungsi pronunciation_assessment_continuous_from_file
.
Jika file audio Anda melebihi 30 detik, gunakan mode berkelanjutan untuk pemrosesan. Kode sampel untuk mode berkelanjutan dapat ditemukan di GitHub.
Jika file audio Anda melebihi 30 detik, gunakan mode berkelanjutan untuk pemrosesan. Kode sampel untuk mode berkelanjutan dapat ditemukan di GitHub di bawah fungsi pronunciationAssessFromFile
.
Jika file audio Anda melebihi 30 detik, gunakan mode berkelanjutan untuk pemrosesan. Kode sampel untuk mode berkelanjutan dapat ditemukan di GitHub di bawah fungsi continuousPronunciationAssessment
.
Mengatur parameter konfigurasi
Catatan
Penilaian pengucapan tidak tersedia dengan Speech SDK untuk Go. Anda dapat membaca tentang konsep dalam panduan ini. Pilih bahasa pemrograman lain untuk solusi Anda.
SpeechRecognizer
Dalam , Anda dapat menentukan bahasa untuk mempelajari atau mempraktikkan meningkatkan pengucapan. Lokal defaultnya adalah en-US
. Untuk mempelajari cara menentukan bahasa pembelajaran untuk penilaian pengucapan di aplikasi Anda sendiri, Anda dapat menggunakan kode sampel berikut.
var recognizer = new SpeechRecognizer(speechConfig, "en-US", audioConfig);
auto recognizer = SpeechRecognizer::FromConfig(speechConfig, "en-US", audioConfig);
SpeechRecognizer recognizer = new SpeechRecognizer(speechConfig, "en-US", audioConfig);
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, language="en-US", audio_config=audio_config)
speechConfig.speechRecognitionLanguage = "en-US";
SPXSpeechRecognizer* recognizer = [[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig language:@"en-US" audioConfiguration:audioConfig];
let recognizer = try! SPXSpeechRecognizer(speechConfiguration: speechConfig, language: "en-US", audioConfiguration: audioConfig)
Tip
Jika Anda tidak yakin lokal mana yang akan diatur untuk bahasa yang memiliki beberapa lokal, coba setiap lokal secara terpisah. Misalnya, untuk bahasa Spanyol, coba es-ES
dan es-MX
. Tentukan skor lokal mana yang lebih tinggi untuk skenario Anda.
Anda harus membuat PronunciationAssessmentConfig
objek. Anda dapat mengatur EnableProsodyAssessment
dan EnableContentAssessmentWithTopic
mengaktifkan penilaian prosody dan konten. Untuk informasi selengkapnya, lihat metode konfigurasi.
var pronunciationAssessmentConfig = new PronunciationAssessmentConfig(
referenceText: "",
gradingSystem: GradingSystem.HundredMark,
granularity: Granularity.Phoneme,
enableMiscue: false);
pronunciationAssessmentConfig.EnableProsodyAssessment();
pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting");
auto pronunciationConfig = PronunciationAssessmentConfig::Create("", PronunciationAssessmentGradingSystem::HundredMark, PronunciationAssessmentGranularity::Phoneme, false);
pronunciationConfig->EnableProsodyAssessment();
pronunciationConfig->EnableContentAssessmentWithTopic("greeting");
PronunciationAssessmentConfig pronunciationConfig = new PronunciationAssessmentConfig("",
PronunciationAssessmentGradingSystem.HundredMark, PronunciationAssessmentGranularity.Phoneme, false);
pronunciationConfig.enableProsodyAssessment();
pronunciationConfig.enableContentAssessmentWithTopic("greeting");
pronunciation_config = speechsdk.PronunciationAssessmentConfig(
reference_text="",
grading_system=speechsdk.PronunciationAssessmentGradingSystem.HundredMark,
granularity=speechsdk.PronunciationAssessmentGranularity.Phoneme,
enable_miscue=False)
pronunciation_config.enable_prosody_assessment()
pronunciation_config.enable_content_assessment_with_topic("greeting")
var pronunciationAssessmentConfig = new sdk.PronunciationAssessmentConfig(
referenceText: "",
gradingSystem: sdk.PronunciationAssessmentGradingSystem.HundredMark,
granularity: sdk.PronunciationAssessmentGranularity.Phoneme,
enableMiscue: false);
pronunciationAssessmentConfig.enableProsodyAssessment();
pronunciationAssessmentConfig.enableContentAssessmentWithTopic("greeting");
SPXPronunciationAssessmentConfiguration *pronunicationConfig =
[[SPXPronunciationAssessmentConfiguration alloc] init:@"" gradingSystem:SPXPronunciationAssessmentGradingSystem_HundredMark granularity:SPXPronunciationAssessmentGranularity_Phoneme enableMiscue:false];
[pronunicationConfig enableProsodyAssessment];
[pronunicationConfig enableContentAssessmentWithTopic:@"greeting"];
let pronAssessmentConfig = try! SPXPronunciationAssessmentConfiguration("",
gradingSystem: .hundredMark,
granularity: .phoneme,
enableMiscue: false)
pronAssessmentConfig.enableProsodyAssessment()
pronAssessmentConfig.enableContentAssessment(withTopic: "greeting")
Tabel ini mencantumkan beberapa parameter konfigurasi utama untuk penilaian pengucapan.
Parameter | Deskripsi |
---|---|
ReferenceText |
Teks yang dievaluasi oleh pengucapan. Parameter ReferenceText bersifat opsional. Atur teks referensi jika Anda ingin menjalankan penilaian skrip untuk skenario pembelajaran bahasa baca. Jangan atur teks referensi jika Anda ingin menjalankan penilaian yang tidak diskrip.Untuk perbedaan harga antara penilaian berskrip dan tidak diskrip, lihat Harga. |
GradingSystem |
Sistem poin untuk kalibrasi skor.
FivePoint memberikan skor 0-5 floating point.
HundredMark memberikan skor floating point 0-100. Default: FivePoint . |
Granularity |
Menentukan tingkat granularitas evaluasi terendah. Mengembalikan skor untuk tingkat yang lebih besar dari atau sama dengan nilai minimal. Nilai yang diterima adalah Phoneme , yang menunjukkan skor pada teks lengkap, kata, suku kata, dan tingkat fonem, Word , yang memperlihatkan skor pada teks lengkap dan tingkat kata, atau FullText , yang hanya menunjukkan skor pada tingkat teks lengkap. Teks referensi lengkap yang disediakan bisa berupa kata, kalimat, atau paragraf. Ini tergantung pada teks referensi input Anda. Default: Phoneme . |
EnableMiscue |
Memungkinkan perhitungan miscue ketika kata-kata yang diucapkan dibandingkan dengan teks referensi. Mengaktifkan kesalahan bersifat opsional. Jika nilai ini adalah True , nilai hasil ErrorType dapat diatur ke Omission atau Insertion berdasarkan perbandingan. Nilai adalah False dan True . Default: False . Untuk mengaktifkan perhitungan yang salah, atur ke EnableMiscue True . Anda dapat merujuk ke cuplikan kode di atas tabel. |
ScenarioId |
GUID untuk sistem titik yang disesuaikan. |
Metode konfigurasi
Tabel ini mencantumkan beberapa metode opsional yang dapat Anda atur untuk objek.PronunciationAssessmentConfig
Catatan
Penilaian konten dan prosody hanya tersedia di lokal en-US .
Untuk menjelajahi penilaian konten dan prosody, tingkatkan ke SDK versi 1.35.0 atau yang lebih baru.
Tidak ada batas panjang untuk parameter topik.
Metode | Deskripsi |
---|---|
EnableProsodyAssessment |
Mengaktifkan penilaian prosody untuk evaluasi pengucapan Anda. Fitur ini menilai aspek-aspek seperti stres, intonasi, kecepatan berbicara, dan ritme. Fitur ini memberikan wawasan tentang kealamaan dan ekspresi ucapan Anda. Mengaktifkan penilaian prosody bersifat opsional. Jika metode ini dipanggil, ProsodyScore nilai hasil dikembalikan. |
EnableContentAssessmentWithTopic |
Mengaktifkan penilaian konten. Penilaian konten adalah bagian dari penilaian yang tidak ditulis untuk skenario pembelajaran bahasa berbicara. Dengan memberikan deskripsi, Anda dapat meningkatkan pemahaman penilaian tentang topik tertentu yang diucapkan. Misalnya, dalam panggilan pronunciationAssessmentConfig.EnableContentAssessmentWithTopic("greeting"); C# . Anda dapat mengganti 'salam' dengan teks yang Anda inginkan untuk menjelaskan topik. Deskripsi tidak memiliki batas panjang dan saat ini hanya mendukung en-US lokal. |
Mendapatkan hasil penilaian pengucapan
Saat ucapan dikenali, Anda dapat meminta hasil penilaian pengucapan sebagai objek SDK atau string JSON.
using (var speechRecognizer = new SpeechRecognizer(
speechConfig,
audioConfig))
{
// (Optional) get the session ID
speechRecognizer.SessionStarted += (s, e) => {
Console.WriteLine($"SESSION ID: {e.SessionId}");
};
pronunciationAssessmentConfig.ApplyTo(speechRecognizer);
var speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync();
// The pronunciation assessment result as a Speech SDK object
var pronunciationAssessmentResult =
PronunciationAssessmentResult.FromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
var pronunciationAssessmentResultJson = speechRecognitionResult.Properties.GetProperty(PropertyId.SpeechServiceResponse_JsonResult);
}
Hasil Word, suku kata, dan phoneme tidak tersedia dengan menggunakan objek SDK dengan Speech SDK untuk C++. Hasil kata, suku kata, dan fonem hanya tersedia dalam string JSON.
auto speechRecognizer = SpeechRecognizer::FromConfig(
speechConfig,
audioConfig);
// (Optional) get the session ID
speechRecognizer->SessionStarted.Connect([](const SessionEventArgs& e) {
std::cout << "SESSION ID: " << e.SessionId << std::endl;
});
pronunciationAssessmentConfig->ApplyTo(speechRecognizer);
speechRecognitionResult = speechRecognizer->RecognizeOnceAsync().get();
// The pronunciation assessment result as a Speech SDK object
auto pronunciationAssessmentResult =
PronunciationAssessmentResult::FromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
auto pronunciationAssessmentResultJson = speechRecognitionResult->Properties.GetProperty(PropertyId::SpeechServiceResponse_JsonResult);
Untuk mempelajari cara menentukan bahasa pembelajaran untuk penilaian pengucapan di aplikasi Anda sendiri, lihat kode sampel.
Untuk pengembangan aplikasi Android, kata, suku kata, dan hasil phoneme tersedia dengan menggunakan objek SDK dengan Speech SDK untuk Java. Hasilnya juga tersedia dalam string JSON. Untuk pengembangan aplikasi Java Runtime (JRE), hasil kata, suku kata, dan fonem hanya tersedia dalam string JSON.
SpeechRecognizer speechRecognizer = new SpeechRecognizer(
speechConfig,
audioConfig);
// (Optional) get the session ID
speechRecognizer.sessionStarted.addEventListener((s, e) -> {
System.out.println("SESSION ID: " + e.getSessionId());
});
pronunciationAssessmentConfig.applyTo(speechRecognizer);
Future<SpeechRecognitionResult> future = speechRecognizer.recognizeOnceAsync();
SpeechRecognitionResult speechRecognitionResult = future.get(30, TimeUnit.SECONDS);
// The pronunciation assessment result as a Speech SDK object
PronunciationAssessmentResult pronunciationAssessmentResult =
PronunciationAssessmentResult.fromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
String pronunciationAssessmentResultJson = speechRecognitionResult.getProperties().getProperty(PropertyId.SpeechServiceResponse_JsonResult);
recognizer.close();
speechConfig.close();
audioConfig.close();
pronunciationAssessmentConfig.close();
speechRecognitionResult.close();
var speechRecognizer = SpeechSDK.SpeechRecognizer.FromConfig(speechConfig, audioConfig);
// (Optional) get the session ID
speechRecognizer.sessionStarted = (s, e) => {
console.log(`SESSION ID: ${e.sessionId}`);
};
pronunciationAssessmentConfig.applyTo(speechRecognizer);
speechRecognizer.recognizeOnceAsync((speechRecognitionResult: SpeechSDK.SpeechRecognitionResult) => {
// The pronunciation assessment result as a Speech SDK object
var pronunciationAssessmentResult = SpeechSDK.PronunciationAssessmentResult.fromResult(speechRecognitionResult);
// The pronunciation assessment result as a JSON string
var pronunciationAssessmentResultJson = speechRecognitionResult.properties.getProperty(SpeechSDK.PropertyId.SpeechServiceResponse_JsonResult);
},
{});
Untuk mempelajari cara menentukan bahasa pembelajaran untuk penilaian pengucapan di aplikasi Anda sendiri, lihat kode sampel.
speech_recognizer = speechsdk.SpeechRecognizer(
speech_config=speech_config, \
audio_config=audio_config)
# (Optional) get the session ID
speech_recognizer.session_started.connect(lambda evt: print(f"SESSION ID: {evt.session_id}"))
pronunciation_assessment_config.apply_to(speech_recognizer)
speech_recognition_result = speech_recognizer.recognize_once()
# The pronunciation assessment result as a Speech SDK object
pronunciation_assessment_result = speechsdk.PronunciationAssessmentResult(speech_recognition_result)
# The pronunciation assessment result as a JSON string
pronunciation_assessment_result_json = speech_recognition_result.properties.get(speechsdk.PropertyId.SpeechServiceResponse_JsonResult)
Untuk mempelajari cara menentukan bahasa pembelajaran untuk penilaian pengucapan di aplikasi Anda sendiri, lihat kode sampel.
SPXSpeechRecognizer* speechRecognizer = \
[[SPXSpeechRecognizer alloc] initWithSpeechConfiguration:speechConfig
audioConfiguration:audioConfig];
// (Optional) get the session ID
[speechRecognizer addSessionStartedEventHandler: ^ (SPXRecognizer *sender, SPXSessionEventArgs *eventArgs) {
NSLog(@"SESSION ID: %@", eventArgs.sessionId);
}];
[pronunciationAssessmentConfig applyToRecognizer:speechRecognizer];
SPXSpeechRecognitionResult *speechRecognitionResult = [speechRecognizer recognizeOnce];
// The pronunciation assessment result as a Speech SDK object
SPXPronunciationAssessmentResult* pronunciationAssessmentResult = [[SPXPronunciationAssessmentResult alloc] init:speechRecognitionResult];
// The pronunciation assessment result as a JSON string
NSString* pronunciationAssessmentResultJson = [speechRecognitionResult.properties getPropertyByName:SPXSpeechServiceResponseJsonResult];
Untuk mempelajari cara menentukan bahasa pembelajaran untuk penilaian pengucapan di aplikasi Anda sendiri, lihat kode sampel.
let speechRecognizer = try! SPXSpeechRecognizer(speechConfiguration: speechConfig, audioConfiguration: audioConfig)
// (Optional) get the session ID
speechRecognizer.addSessionStartedEventHandler { (sender, evt) in
print("SESSION ID: \(evt.sessionId)")
try! pronConfig.apply(to: speechRecognizer)
let speechRecognitionResult = try? speechRecognizer.recognizeOnce()
// The pronunciation assessment result as a Speech SDK object
let pronunciationAssessmentResult = SPXPronunciationAssessmentResult(speechRecognitionResult!)
// The pronunciation assessment result as a JSON string
let pronunciationAssessmentResultJson = speechRecognitionResult!.properties?.getPropertyBy(SPXPropertyId.speechServiceResponseJsonResult)
Parameter hasil
Bergantung pada apakah Anda menggunakan penilaian berskrip atau tidak, Anda bisa mendapatkan hasil penilaian pengucapan yang berbeda. Penilaian skrip adalah untuk skenario pembelajaran bahasa baca. Penilaian yang tidak diskrip adalah untuk skenario pembelajaran bahasa berbicara.
Catatan
Untuk perbedaan harga antara penilaian berskrip dan tidak diskrip, lihat Harga.
Hasil penilaian berskrip
Tabel ini mencantumkan beberapa hasil penilaian pengucapan utama untuk penilaian berskrip, atau skenario membaca.
Parameter | Deskripsi | Granularitas |
---|---|---|
AccuracyScore |
Akurasi pelafalan ucapan. Akurasi menunjukkan seberapa dekat fonem cocok dengan pengucapan penutur asli. Skor akurasi suku kata, kata, dan teks lengkap dikumpulkan dari skor akurasi tingkat fonem, dan disempurnakan dengan tujuan penilaian. | Tingkat telepon, Tingkat suku kata (hanya en-US), Tingkat kata, Tingkat Teks Penuh |
FluencyScore |
Kefasihan ucapan yang diberikan. Kefasihan menunjukkan seberapa dekat ucapan cocok dengan penggunaan jeda diam di antara kata-kata penutur asli. | Tingkat Teks Penuh |
CompletenessScore |
Kelengkapan ucapan, dihitung dengan rasio kata yang diucapkan ke teks referensi input. | Tingkat Teks Penuh |
ProsodyScore |
Prosody dari ucapan yang diberikan. Prosody menunjukkan betapa alaminya ucapan yang diberikan, termasuk stres, intonasi, kecepatan berbicara, dan ritme. | Tingkat Teks Penuh |
PronScore |
Skor keseluruhan kualitas pengucapan dari ucapan yang diberikan.
PronScore dihitung dari AccuracyScore , , FluencyScore CompletenessScore , dan ProsodyScore dengan berat, asalkan ProsodyScore dan CompletenessScore tersedia. Jika salah satu dari mereka tidak tersedia, PronScore tidak akan mempertimbangkan skor tersebut. |
Tingkat Teks Penuh |
ErrorType |
Nilai ini menunjukkan jenis kesalahan dibandingkan dengan teks referensi. Opsi mencakup apakah kata dihilangkan, disisipkan, atau disisipkan secara tidak benar dengan pemisah. Ini juga menunjukkan istirahat yang hilang pada tanda baca. Ini juga menunjukkan apakah kata diucapkan dengan buruk, atau naik secara monoton, jatuh, atau datar pada ungkapan. Nilai yang mungkin adalah None untuk tidak ada kesalahan pada kata ini, , Omission , Insertion , Mispronunciation UnexpectedBreak , MissingBreak , dan Monotone . Jenis kesalahan bisa ketika Mispronunciation pengucapan AccuracyScore untuk kata di bawah 60. |
Tingkat kata |
Hasil penilaian yang tidak diskrip
Tabel ini mencantumkan beberapa hasil penilaian pengucapan utama untuk penilaian yang tidak ditulis, atau skenario berbicara.
VocabularyScore
parameter , GrammarScore
, dan TopicScore
digulung hingga penilaian konten gabungan.
Catatan
Penilaian konten dan prosody hanya tersedia di lokal en-US .
Parameter respons | Deskripsi | Granularitas |
---|---|---|
AccuracyScore |
Akurasi pelafalan ucapan. Akurasi menunjukkan seberapa dekat fonem cocok dengan pengucapan penutur asli. Skor akurasi suku kata, kata, dan teks lengkap dikumpulkan dari skor akurasi tingkat fonem, dan disempurnakan dengan tujuan penilaian. | Tingkat telepon, Tingkat suku kata (hanya en-US), Tingkat kata, Tingkat Teks Penuh |
FluencyScore |
Kefasihan ucapan yang diberikan. Kefasihan menunjukkan seberapa dekat ucapan cocok dengan penggunaan jeda diam di antara kata-kata penutur asli. | Tingkat Teks Penuh |
ProsodyScore |
Prosody dari ucapan yang diberikan. Prosody menunjukkan betapa alaminya ucapan yang diberikan, termasuk stres, intonasi, kecepatan berbicara, dan ritme. | Tingkat Teks Penuh |
VocabularyScore |
Kemampuan dalam penggunaan leksikal. Ini mengevaluasi penggunaan kata-kata pembicara yang efektif dan kepatutannya dalam konteks yang diberikan untuk mengekspresikan ide secara akurat, dan tingkat kompleksitas leksikal. | Tingkat Teks Penuh |
GrammarScore |
Kebenaran dalam menggunakan tata bahasa dan berbagai pola kalimat. Akurasi leksikal, akurasi tata bahasa, dan keragaman struktur kalimat secara bersama-sama meningkatkan kesalahan tata bahasa. | Tingkat Teks Penuh |
TopicScore |
Tingkat pemahaman dan keterlibatan dengan topik, yang memberikan wawasan tentang kemampuan pembicara untuk mengekspresikan pemikiran dan ide mereka secara efektif dan kemampuan untuk terlibat dengan topik tersebut. | Tingkat Teks Penuh |
PronScore |
Skor keseluruhan kualitas pengucapan dari ucapan yang diberikan.
PronScore dihitung dari AccuracyScore , , FluencyScore dan ProsodyScore dengan berat, asalkan ProsodyScore tersedia. Jika ProsodyScore tidak tersedia, PronScore tidak akan mempertimbangkan skor tersebut. |
Tingkat Teks Penuh |
ErrorType |
Kata diucapkan dengan buruk, dimasukkan dengan tidak benar dengan jeda, atau kehilangan jeda pada tanda baca. Ini juga menunjukkan apakah pengucapan naik secara monoton, jatuh, atau datar pada ungkapan. Nilai yang mungkin adalah None untuk tidak ada kesalahan pada kata ini, , Mispronunciation , UnexpectedBreak MissingBreak , dan Monotone . |
Tingkat kata |
Tabel berikut ini menjelaskan hasil penilaian prosody secara lebih rinci:
Bidang | Deskripsi |
---|---|
ProsodyScore |
Skor prosody dari seluruh ucapan. |
Feedback |
Umpan balik tentang tingkat kata, termasuk Break dan Intonation . |
Break |
|
ErrorTypes |
Jenis kesalahan yang terkait dengan jeda, termasuk UnexpectedBreak dan MissingBreak . Versi saat ini tidak menyediakan jenis kesalahan pemutusan. Anda perlu mengatur ambang batas pada bidang UnexpectedBreak – Confidence dan MissingBreak – confidence untuk memutuskan apakah ada pemisah yang tidak terduga atau kehilangan pemisah sebelum kata. |
UnexpectedBreak |
Menunjukkan pemisah tak terduga sebelum kata. |
MissingBreak |
Menunjukkan pemisah yang hilang sebelum kata. |
Thresholds |
Ambang batas yang disarankan pada kedua skor keyakinan adalah 0,75. Itu berarti, jika nilai lebih besar dari UnexpectedBreak – Confidence 0,75, nilai tersebut memiliki jeda yang tidak terduga. Jika nilainya lebih besar dari 0,75, nilai MissingBreak – confidence tersebut memiliki jeda yang hilang. Meskipun 0,75 adalah nilai yang kami rekomendasikan, lebih baik menyesuaikan ambang batas berdasarkan skenario Anda sendiri. Jika Anda ingin memiliki sensitivitas deteksi variabel pada dua jeda ini, Anda dapat menetapkan ambang batas yang berbeda ke UnexpectedBreak - Confidence bidang dan MissingBreak - Confidence . |
Intonation |
Menunjukkan intonasi dalam ucapan. |
ErrorTypes |
Jenis kesalahan yang terkait dengan intonasi, saat ini hanya mendukung Monotone.
Monotone Jika ada di bidang ErrorTypes , ucapan terdeteksi monoton. Monoton terdeteksi pada seluruh ucapan, tetapi tag ditetapkan ke semua kata. Semua kata dalam ucapan yang sama berbagi informasi deteksi monoton yang sama. |
Monotone |
Menunjukkan ucapan monotonik. |
Thresholds (Monotone Confidence) |
Bidang Monotone - SyllablePitchDeltaConfidence dicadangkan untuk deteksi monoton yang disesuaikan pengguna. Jika Anda tidak puas dengan keputusan monoton yang disediakan, sesuaikan ambang batas pada bidang ini untuk menyesuaikan deteksi sesuai dengan preferensi Anda. |
Contoh hasil JSON
Hasil penilaian pengucapan berskrip untuk kata lisan "hello" ditampilkan sebagai string JSON dalam contoh berikut.
- Alfabet fonem adalah IPA.
- Suku kata ditampilkan bersama fonem untuk kata yang sama.
- Anda dapat menggunakan nilai
Offset
danDuration
untuk menyelaraskan suku kata dengan fonem yang sesuai. Misalnya, offset awal (11700000) dari sukuloʊ
kata kedua selaras dengan fonem ketiga,l
. Offset mewakili waktu di mana ucapan yang dikenali dimulai dalam aliran audio. Nilai diukur dalam 100 unit nanodetik. Untuk mempelajari selengkapnya tentangOffset
danDuration
, lihat properti respons. - Ada lima
NBestPhonemes
yang sesuai dengan jumlah fonem lisan yang diminta. - Dalam
Phonemes
, fonem lisan yang paling mungkin adalahə
alih-alih fonemɛ
yang diharapkan. Fonemɛ
yang diharapkan hanya menerima skor keyakinan 47. Potensi kecocokan lainnya mendapatkan skor keyakinan 52, 17, dan 2.
{
"Id": "bbb42ea51bdb46d19a1d685e635fe173",
"RecognitionStatus": 0,
"Offset": 7500000,
"Duration": 13800000,
"DisplayText": "Hello.",
"NBest": [
{
"Confidence": 0.975003,
"Lexical": "hello",
"ITN": "hello",
"MaskedITN": "hello",
"Display": "Hello.",
"PronunciationAssessment": {
"AccuracyScore": 100,
"FluencyScore": 100,
"CompletenessScore": 100,
"PronScore": 100
},
"Words": [
{
"Word": "hello",
"Offset": 7500000,
"Duration": 13800000,
"PronunciationAssessment": {
"AccuracyScore": 99.0,
"ErrorType": "None"
},
"Syllables": [
{
"Syllable": "hɛ",
"PronunciationAssessment": {
"AccuracyScore": 91.0
},
"Offset": 7500000,
"Duration": 4100000
},
{
"Syllable": "loʊ",
"PronunciationAssessment": {
"AccuracyScore": 100.0
},
"Offset": 11700000,
"Duration": 9600000
}
],
"Phonemes": [
{
"Phoneme": "h",
"PronunciationAssessment": {
"AccuracyScore": 98.0,
"NBestPhonemes": [
{
"Phoneme": "h",
"Score": 100.0
},
{
"Phoneme": "oʊ",
"Score": 52.0
},
{
"Phoneme": "ə",
"Score": 35.0
},
{
"Phoneme": "k",
"Score": 23.0
},
{
"Phoneme": "æ",
"Score": 20.0
}
]
},
"Offset": 7500000,
"Duration": 3500000
},
{
"Phoneme": "ɛ",
"PronunciationAssessment": {
"AccuracyScore": 47.0,
"NBestPhonemes": [
{
"Phoneme": "ə",
"Score": 100.0
},
{
"Phoneme": "l",
"Score": 52.0
},
{
"Phoneme": "ɛ",
"Score": 47.0
},
{
"Phoneme": "h",
"Score": 17.0
},
{
"Phoneme": "æ",
"Score": 2.0
}
]
},
"Offset": 11100000,
"Duration": 500000
},
{
"Phoneme": "l",
"PronunciationAssessment": {
"AccuracyScore": 100.0,
"NBestPhonemes": [
{
"Phoneme": "l",
"Score": 100.0
},
{
"Phoneme": "oʊ",
"Score": 46.0
},
{
"Phoneme": "ə",
"Score": 5.0
},
{
"Phoneme": "ɛ",
"Score": 3.0
},
{
"Phoneme": "u",
"Score": 1.0
}
]
},
"Offset": 11700000,
"Duration": 1100000
},
{
"Phoneme": "oʊ",
"PronunciationAssessment": {
"AccuracyScore": 100.0,
"NBestPhonemes": [
{
"Phoneme": "oʊ",
"Score": 100.0
},
{
"Phoneme": "d",
"Score": 29.0
},
{
"Phoneme": "t",
"Score": 24.0
},
{
"Phoneme": "n",
"Score": 22.0
},
{
"Phoneme": "l",
"Score": 18.0
}
]
},
"Offset": 12900000,
"Duration": 8400000
}
]
}
]
}
]
}
Anda bisa mendapatkan skor penilaian pengucapan untuk:
- Teks lengkap
- Kata
- Grup suku kata
- Fonem dalam format SAPI atau IPA
Fitur yang didukung per lokal
Tabel berikut ini meringkas fitur mana yang didukung lokal. Untuk menentukan selengkapnya, lihat bagian berikut ini. Jika lokal yang Anda perlukan tidak tercantum dalam tabel berikut untuk fitur yang didukung, isi formulir asupan ini untuk bantuan lebih lanjut.
Alfabet fonem | IPA | SAPI |
---|---|---|
Nama fonem | en-US |
en-US , zh-CN |
Grup suku kata | en-US |
en-US |
Fonem lisan | en-US |
en-US |
Grup suku kata
Penilaian pengucapan dapat memberikan hasil penilaian tingkat suku kata. Sebuah kata biasanya diucapkan suku kata oleh suku kata daripada fonem melalui fonem. Pengelompokan dalam suku kata lebih mudah terbayangkan dan selaras dengan kebiasaan berbicara.
Penilaian pengucapan mendukung grup suku kata hanya di en-US
dengan IPA dan dengan SAPI.
Tabel berikut membandingkan contoh fonem dengan suku kata yang sesuai.
Contoh kata | Fonem | Suku kata |
---|---|---|
technological | teknələdʒɪkl | tek·nə·lɑ·dʒɪkl |
halo | hɛloʊ | hɛ·loʊ |
luck | lʌk | lʌk |
photosynthesis | foʊtəsɪnθəsɪs | foʊ·tə·sɪn·θə·sɪs |
Untuk meminta hasil tingkat suku kata bersama dengan fonem, atur parameter konfigurasi granularitas ke Phoneme
.
Format alfabet fonem
Penilaian pengucapan mendukung nama fonem dengan en-US
IPA dan di dan en-US
zh-CN
dengan SAPI.
Untuk lokal yang mendukung nama fonem, nama fonem disediakan bersama dengan skor. Nama fonem membantu mengidentifikasi fonem mana yang diucapkan secara akurat atau tidak akurat. Untuk lokal lain, Anda hanya bisa mendapatkan skor fonem.
Tabel berikut membandingkan contoh fonem SAPI dengan fonem IPA yang sesuai.
Contoh kata | Fonem SAPI | Fonem IPA |
---|---|---|
halo | h eh l ow | h ɛ l oʊ |
luck | l ah k | l ʌ k |
photosynthesis | f ow t ax s ih n th ax s ih s | f oʊ t ə s ɪ n θ ə s ɪ s |
Untuk meminta fonem IPA, atur alfabet fonem ke IPA
. Jika Anda tidak menentukan alfabet, fonem dalam format SAPI secara default.
pronunciationAssessmentConfig.PhonemeAlphabet = "IPA";
auto pronunciationAssessmentConfig = PronunciationAssessmentConfig::CreateFromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
PronunciationAssessmentConfig pronunciationAssessmentConfig = PronunciationAssessmentConfig.fromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
pronunciation_assessment_config = speechsdk.PronunciationAssessmentConfig(json_string="{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}")
var pronunciationAssessmentConfig = SpeechSDK.PronunciationAssessmentConfig.fromJSON("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\"}");
pronunciationAssessmentConfig.phonemeAlphabet = @"IPA";
pronunciationAssessmentConfig?.phonemeAlphabet = "IPA"
Menilai fonem lisan
Dengan fonem lisan, Anda bisa mendapatkan skor keyakinan yang menunjukkan seberapa besar kemungkinan fonem lisan cocok dengan fonem yang diharapkan.
Penilaian pengucapan mendukung fonem lisan dengan en-US
IPA dan dengan SAPI.
Misalnya, untuk mendapatkan suara lisan lengkap untuk kata Hello
, Anda dapat menggabungkan fonem lisan pertama untuk setiap fonem yang diharapkan dengan skor keyakinan tertinggi. Dalam hasil penilaian berikut, ketika Anda mengucapkan kata hello
, fonem IPA yang diharapkan adalah h ɛ l oʊ
. Namun, fonem lisan yang sebenarnya adalah h ə l oʊ
. Anda memiliki lima kandidat yang mungkin untuk setiap fonem yang diharapkan dalam contoh ini. Hasil penilaian menunjukkan bahwa fonem lisan yang paling mungkin bukan ə
fonem ɛ
yang diharapkan . Fonem ɛ
yang diharapkan hanya menerima skor keyakinan 47. Potensi kecocokan lainnya mendapatkan skor keyakinan 52, 17, dan 2.
{
"Id": "bbb42ea51bdb46d19a1d685e635fe173",
"RecognitionStatus": 0,
"Offset": 7500000,
"Duration": 13800000,
"DisplayText": "Hello.",
"NBest": [
{
"Confidence": 0.975003,
"Lexical": "hello",
"ITN": "hello",
"MaskedITN": "hello",
"Display": "Hello.",
"PronunciationAssessment": {
"AccuracyScore": 100,
"FluencyScore": 100,
"CompletenessScore": 100,
"PronScore": 100
},
"Words": [
{
"Word": "hello",
"Offset": 7500000,
"Duration": 13800000,
"PronunciationAssessment": {
"AccuracyScore": 99.0,
"ErrorType": "None"
},
"Syllables": [
{
"Syllable": "hɛ",
"PronunciationAssessment": {
"AccuracyScore": 91.0
},
"Offset": 7500000,
"Duration": 4100000
},
{
"Syllable": "loʊ",
"PronunciationAssessment": {
"AccuracyScore": 100.0
},
"Offset": 11700000,
"Duration": 9600000
}
],
"Phonemes": [
{
"Phoneme": "h",
"PronunciationAssessment": {
"AccuracyScore": 98.0,
"NBestPhonemes": [
{
"Phoneme": "h",
"Score": 100.0
},
{
"Phoneme": "oʊ",
"Score": 52.0
},
{
"Phoneme": "ə",
"Score": 35.0
},
{
"Phoneme": "k",
"Score": 23.0
},
{
"Phoneme": "æ",
"Score": 20.0
}
]
},
"Offset": 7500000,
"Duration": 3500000
},
{
"Phoneme": "ɛ",
"PronunciationAssessment": {
"AccuracyScore": 47.0,
"NBestPhonemes": [
{
"Phoneme": "ə",
"Score": 100.0
},
{
"Phoneme": "l",
"Score": 52.0
},
{
"Phoneme": "ɛ",
"Score": 47.0
},
{
"Phoneme": "h",
"Score": 17.0
},
{
"Phoneme": "æ",
"Score": 2.0
}
]
},
"Offset": 11100000,
"Duration": 500000
},
{
"Phoneme": "l",
"PronunciationAssessment": {
"AccuracyScore": 100.0,
"NBestPhonemes": [
{
"Phoneme": "l",
"Score": 100.0
},
{
"Phoneme": "oʊ",
"Score": 46.0
},
{
"Phoneme": "ə",
"Score": 5.0
},
{
"Phoneme": "ɛ",
"Score": 3.0
},
{
"Phoneme": "u",
"Score": 1.0
}
]
},
"Offset": 11700000,
"Duration": 1100000
},
{
"Phoneme": "oʊ",
"PronunciationAssessment": {
"AccuracyScore": 100.0,
"NBestPhonemes": [
{
"Phoneme": "oʊ",
"Score": 100.0
},
{
"Phoneme": "d",
"Score": 29.0
},
{
"Phoneme": "t",
"Score": 24.0
},
{
"Phoneme": "n",
"Score": 22.0
},
{
"Phoneme": "l",
"Score": 18.0
}
]
},
"Offset": 12900000,
"Duration": 8400000
}
]
}
]
}
]
}
Untuk menunjukkan apakah, dan berapa banyak potensi fonem lisan untuk mendapatkan skor keyakinan, atur parameter NBestPhonemeCount
ke nilai bilangan bulat seperti 5
.
pronunciationAssessmentConfig.NBestPhonemeCount = 5;
auto pronunciationAssessmentConfig = PronunciationAssessmentConfig::CreateFromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
PronunciationAssessmentConfig pronunciationAssessmentConfig = PronunciationAssessmentConfig.fromJson("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
pronunciation_assessment_config = speechsdk.PronunciationAssessmentConfig(json_string="{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}")
var pronunciationAssessmentConfig = SpeechSDK.PronunciationAssessmentConfig.fromJSON("{\"referenceText\":\"good morning\",\"gradingSystem\":\"HundredMark\",\"granularity\":\"Phoneme\",\"phonemeAlphabet\":\"IPA\",\"nBestPhonemeCount\":5}");
pronunciationAssessmentConfig.nbestPhonemeCount = 5;
pronunciationAssessmentConfig?.nbestPhonemeCount = 5
Perhitungan skor pengucapan
Skor pengucapan dihitung dengan akurasi pembobotan, prosodi, kefasihan, dan skor kelengkapan berdasarkan rumus tertentu untuk skenario membaca dan berbicara.
Saat mengurutkan skor akurasi, prosody, kefasihan, dan kelengkapan dari rendah ke tinggi (jika setiap skor tersedia) dan mewakili skor terendah ke skor tertinggi sebagai s0 hingga s3, skor pengucapan dihitung sebagai berikut:
Untuk skenario membaca:
- Dengan skor prosody: PronScore = 0,4 * s0 + 0,2 * s1 + 0,2 * s2 + 0,2 * s3
- Tanpa skor prosody: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
Untuk skenario berbicara (skor kelengkapan tidak berlaku):
- Dengan skor prosody: PronScore = 0,6 * s0 + 0,2 * s1 + 0,2 * s2
- Tanpa skor prosody: PronScore = 0,6 * s0 + 0,4 * s1
Rumus ini memberikan perhitungan tertimbang berdasarkan pentingnya setiap skor, memastikan evaluasi pengucapan yang komprehensif.
Konten terkait
- Pelajari tentang tolok ukur kualitas.
- Coba penilaian pengucapan di studio.
- Lihat demo Penilaian Pengucapan yang mudah disebarkan.
- Tonton demo video penilaian pengucapan.