Bagikan melalui


Menggunakan API transkripsi cepat dengan Azure AI Speech

API transkripsi cepat digunakan untuk mentranskripsikan file audio dengan mengembalikan hasil secara sinkron dan lebih cepat daripada real-time. Gunakan transkripsi cepat dalam skenario yang Anda butuhkan transkrip rekaman audio secepat mungkin dengan latensi yang dapat diprediksi, seperti:

  • Transkripsi audio atau video cepat, subtitel, dan edit.
  • Terjemahan video

Tidak seperti API transkripsi batch, API transkripsi cepat hanya menghasilkan transkripsi dalam bentuk tampilan (bukan leksikal). Formulir tampilan adalah bentuk transkripsi yang lebih dapat dibaca manusia yang mencakup tanda baca dan kapitalisasi.

Prasyarat

  • Sumber daya Azure AI Speech di salah satu wilayah tempat API transkripsi cepat tersedia. Wilayah yang didukung adalah: Australia Timur, Brasil Selatan, India Tengah, US Timur, AS Timur 2, Prancis Tengah, Jepang Timur, US Tengah Utara, Eropa Utara, US Tengah Selatan, Asia Tenggara, Swedia Tengah, UK Selatan, Eropa Barat, AS Barat, US Barat 2, US Barat 3. Untuk informasi selengkapnya tentang wilayah yang didukung untuk fitur layanan Ucapan lainnya, lihat Wilayah layanan ucapan.

  • File audio (berdurasi kurang dari 2 jam dan kurang dari 200 MB) dalam salah satu format dan codec yang didukung oleh API transkripsi batch. Untuk informasi selengkapnya tentang format audio yang didukung, lihat format audio yang didukung.

Menggunakan API transkripsi cepat

Tip

Cobalah transkripsi cepat di portal Azure AI Foundry.

Catatan

Layanan ucapan adalah layanan elastis. Jika Anda menerima kode kesalahan 429 (terlalu banyak permintaan), ikuti praktik terbaik untuk mengurangi pembatasan selama penskalakan otomatis.

Kami mempelajari cara menggunakan API transkripsi cepat (melalui Transkripsi - Transkripsi) dengan skenario berikut:

  • Lokal yang diketahui ditentukan: Mentranskripsikan file audio dengan lokal tertentu. Jika Anda mengetahui lokal file audio, Anda dapat menentukannya untuk meningkatkan akurasi transkripsi dan meminimalkan latensi.
  • Identifikasi bahasa pada: Mentranskripsikan file audio dengan identifikasi bahasa aktif. Jika Anda tidak yakin tentang lokal file audio, Anda dapat mengaktifkan identifikasi bahasa untuk mengizinkan layanan Ucapan mengidentifikasi lokal.
  • Diarisasi pada: Mentranskripsikan file audio dengan diarisasi aktif. Diarisasi membedakan antara pembicara yang berbeda dalam percakapan. Layanan Ucapan menyediakan informasi tentang pembicara mana yang berbicara bagian tertentu dari ucapan yang ditranskripsikan.
  • Multi-saluran pada: Mentranskripsikan file audio yang memiliki satu atau dua saluran. Transkripsi multi-saluran berguna untuk file audio dengan beberapa saluran, seperti file audio dengan beberapa speaker atau file audio dengan kebisingan latar belakang. Secara default, API transkripsi cepat menggabungkan semua saluran input ke dalam satu saluran dan kemudian melakukan transkripsi. Jika ini tidak diinginkan, saluran dapat ditranskripsikan secara independen tanpa menggabungkan.

Buat permintaan POST multipart/form-data ke transcriptions titik akhir dengan file audio dan properti isi permintaan.

Contoh berikut menunjukkan cara mentranskripsikan file audio dengan lokal tertentu. Jika Anda mengetahui lokal file audio, Anda dapat menentukannya untuk meningkatkan akurasi transkripsi dan meminimalkan latensi.

  • Ganti YourSubscriptionKey dengan kunci sumber daya Ucapan Anda.
  • Ganti YourServiceRegion dengan wilayah sumber daya Ucapan Anda.
  • Ganti YourAudioFile dengan jalur ke file audio Anda.
curl --location 'https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-11-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: YourSubscriptionKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition="{
    "locales":["en-US"]}"'

Buat definisi formulir sesuai dengan instruksi berikut:

  • Atur properti opsional (tetapi disarankan) locales yang harus cocok dengan lokal data audio yang diharapkan untuk ditranskripsikan. Dalam contoh ini, lokal diatur ke en-US. Lokal yang didukung yang dapat Anda tentukan adalah: de-DE, en-GB, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR, dan zh-CN.

Untuk informasi selengkapnya tentang locales dan properti lain untuk API transkripsi cepat, lihat bagian opsi konfigurasi permintaan nanti di panduan ini.

Responsnya mencakup durationMilliseconds, offsetMilliseconds, dan banyak lagi. Properti combinedPhrases berisi transkripsi lengkap untuk semua speaker.

{
	"durationMilliseconds": 182439,
	"combinedPhrases": [
		{
			"text": "Good afternoon. This is Sam. Thank you for calling Contoso. How can I help? Hi there. My name is Mary. I'm currently living in Los Angeles, but I'm planning to move to Las Vegas. I would like to apply for a loan. Okay. I see you're currently living in California. Let me make sure I understand you correctly. Uh You'd like to apply for a loan even though you'll be moving soon. Is that right? Yes, exactly. So I'm planning to relocate soon, but I would like to apply for the loan first so that I can purchase a new home once I move there. And are you planning to sell your current home? Yes, I will be listing it on the market soon and hopefully it'll sell quickly. That's why I'm applying for a loan now, so that I can purchase a new house in Nevada and close on it quickly as well once my current home sells. I see. Would you mind holding for a moment while I take your information down? Yeah, no problem. Thank you for your help. Mm-hmm. Just one moment. All right. Thank you for your patience, ma'am. May I have your first and last name, please? Yes, my name is Mary Smith. Thank you, Ms. Smith. May I have your current address, please? Yes. So my address is 123 Main Street in Los Angeles, California, and the zip code is 90923. Sorry, that was a 90 what? 90923. 90923 on Main Street. Got it. Thank you. May I have your phone number as well, please? Uh Yes, my phone number is 504-529-2351 and then yeah. 2351. Got it. And do you have an e-mail address we I can associate with this application? uh Yes, so my e-mail address is mary.a.sm78@gmail.com. Mary.a, was that a S-N as in November or M as in Mike? M as in Mike. Mike78, got it. Thank you. Ms. Smith, do you currently have any other loans? Uh Yes, so I currently have two other loans through Contoso. So my first one is my car loan and then my other is my student loan. They total about 1400 per month combined and my interest rate is 8%. I see. And you're currently paying those loans off monthly, is that right? Yes, of course I do. OK, thank you. Here's what I suggest we do. Let me place you on a brief hold again so that I can talk with one of our loan officers and get this started for you immediately. In the meantime, it would be great if you could take a few minutes and complete the remainder of the secure application online at www.contosoloans.com. Yeah, that sounds good. I can go ahead and get started. Thank you for your help. Thank you."
		}
	],
	"phrases": [
		{
			"offsetMilliseconds": 960,
			"durationMilliseconds": 640,
			"text": "Good afternoon.",
			"words": [
				{
					"text": "Good",
					"offsetMilliseconds": 960,
					"durationMilliseconds": 240
				},
				{
					"text": "afternoon.",
					"offsetMilliseconds": 1200,
					"durationMilliseconds": 400
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 1600,
			"durationMilliseconds": 640,
			"text": "This is Sam.",
			"words": [
				{
					"text": "This",
					"offsetMilliseconds": 1600,
					"durationMilliseconds": 240
				},
				{
					"text": "is",
					"offsetMilliseconds": 1840,
					"durationMilliseconds": 120
				},
				{
					"text": "Sam.",
					"offsetMilliseconds": 1960,
					"durationMilliseconds": 280
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 2240,
			"durationMilliseconds": 1040,
			"text": "Thank you for calling Contoso.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 2240,
					"durationMilliseconds": 200
				},
				{
					"text": "you",
					"offsetMilliseconds": 2440,
					"durationMilliseconds": 80
				},
				{
					"text": "for",
					"offsetMilliseconds": 2520,
					"durationMilliseconds": 120
				},
				{
					"text": "calling",
					"offsetMilliseconds": 2640,
					"durationMilliseconds": 200
				},
				{
					"text": "Contoso.",
					"offsetMilliseconds": 2840,
					"durationMilliseconds": 440
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 3280,
			"durationMilliseconds": 640,
			"text": "How can I help?",
			"words": [
				{
					"text": "How",
					"offsetMilliseconds": 3280,
					"durationMilliseconds": 120
				},
				{
					"text": "can",
					"offsetMilliseconds": 3440,
					"durationMilliseconds": 120
				},
				{
					"text": "I",
					"offsetMilliseconds": 3560,
					"durationMilliseconds": 40
				},
				{
					"text": "help?",
					"offsetMilliseconds": 3600,
					"durationMilliseconds": 320
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 5040,
			"durationMilliseconds": 400,
			"text": "Hi there.",
			"words": [
				{
					"text": "Hi",
					"offsetMilliseconds": 5040,
					"durationMilliseconds": 240
				},
				{
					"text": "there.",
					"offsetMilliseconds": 5280,
					"durationMilliseconds": 160
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		{
			"offsetMilliseconds": 5440,
			"durationMilliseconds": 800,
			"text": "My name is Mary.",
			"words": [
				{
					"text": "My",
					"offsetMilliseconds": 5440,
					"durationMilliseconds": 80
				},
				{
					"text": "name",
					"offsetMilliseconds": 5520,
					"durationMilliseconds": 120
				},
				{
					"text": "is",
					"offsetMilliseconds": 5640,
					"durationMilliseconds": 80
				},
				{
					"text": "Mary.",
					"offsetMilliseconds": 5720,
					"durationMilliseconds": 520
				}
			],
			"locale": "en-US",
			"confidence": 0.93616915
		},
		// More transcription results...
	    // Redacted for brevity
		{
			"offsetMilliseconds": 180320,
			"durationMilliseconds": 680,
			"text": "Thank you for your help.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 180320,
					"durationMilliseconds": 160
				},
				{
					"text": "you",
					"offsetMilliseconds": 180480,
					"durationMilliseconds": 80
				},
				{
					"text": "for",
					"offsetMilliseconds": 180560,
					"durationMilliseconds": 120
				},
				{
					"text": "your",
					"offsetMilliseconds": 180680,
					"durationMilliseconds": 120
				},
				{
					"text": "help.",
					"offsetMilliseconds": 180800,
					"durationMilliseconds": 200
				}
			],
			"locale": "en-US",
			"confidence": 0.9314801
		},
		{
			"offsetMilliseconds": 181960,
			"durationMilliseconds": 280,
			"text": "Thank you.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 181960,
					"durationMilliseconds": 200
				},
				{
					"text": "you.",
					"offsetMilliseconds": 182160,
					"durationMilliseconds": 80
				}
			],
			"locale": "en-US",
			"confidence": 0.9314801
		}
	]
}

Opsi konfigurasi permintaan

Berikut adalah beberapa opsi properti untuk mengonfigurasi transkripsi saat Anda memanggil operasi Transkripsi - Transkripsi .

Properti Deskripsi Diperlukan atau opsional
channels Daftar indeks berbasis nol saluran yang akan ditranskripsikan secara terpisah. Hingga dua saluran didukung kecuali diarisasi diaktifkan. Secara default, API transkripsi cepat menggabungkan semua saluran input ke dalam satu saluran dan kemudian melakukan transkripsi. Jika ini tidak diinginkan, saluran dapat ditranskripsikan secara independen tanpa menggabungkan.

Jika Anda ingin mentranskripsikan saluran dari file audio stereo secara terpisah, Anda perlu menentukan [0,1], , [0]atau [1]. Jika tidak, audio stereo digabungkan ke mono dan hanya satu saluran yang ditranskripsikan.

Jika audio stereo dan diarisasi diaktifkan, maka Anda tidak dapat mengatur properti ke channels[0,1]. Layanan Ucapan tidak mendukung diarisasi beberapa saluran.

Untuk audio mono, channels properti diabaikan, dan audio selalu ditranskripsikan sebagai satu saluran.
Opsional
diarization Konfigurasi diarisasi. Diarisasi adalah proses mengenali dan memisahkan beberapa speaker dalam satu saluran audio. Misalnya, tentukan "diarization": {"maxSpeakers": 2, "enabled": true}. Kemudian file transkripsi berisi speaker entri (seperti "speaker": 0 atau "speaker": 1) untuk setiap frasa yang ditranskripsikan. Opsional
locales Daftar lokal yang harus cocok dengan lokal data audio yang diharapkan untuk ditranskripsikan.

Jika Anda mengetahui lokal file audio, Anda dapat menentukannya untuk meningkatkan akurasi transkripsi dan meminimalkan latensi. Jika satu lokal ditentukan, lokal tersebut digunakan untuk transkripsi.

Tetapi jika Anda tidak yakin tentang lokal, Anda dapat menentukan beberapa lokal. Identifikasi bahasa mungkin lebih akurat dengan daftar lokal kandidat yang lebih tepat.

Jika Anda tidak menentukan lokal apa pun, atau jika lokal yang Anda tentukan tidak ada dalam file audio, maka layanan Ucapan masih mencoba mengidentifikasi bahasa tersebut. Jika bahasa tidak dapat diidentifikasi, kesalahan akan ditampilkan.

Lokal yang didukung yang dapat Anda tentukan adalah: de-DE, en-GB, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR, dan zh-CN. Anda bisa mendapatkan bahasa terbaru yang didukung melalui Transkripsi - Daftar Rest API Lokal yang Didukung. Untuk informasi selengkapnya tentang lokal, lihat dokumentasi dukungan bahasa layanan Ucapan.
Opsional tetapi direkomendasikan jika Anda mengetahui lokal yang diharapkan.
profanityFilterMode Menentukan cara menangani kata-kata tidak senonoh dalam hasil pengenalan. Nilai yang diterima adalah None untuk menonaktifkan pemfilteran kata-kata kotor, Masked untuk mengganti kata-kata kotor dengan tanda bintang, Removed untuk menghapus semua kata-kata kotor dari hasil, atau Tags untuk menambahkan tag "kata-kata kotor". Nilai defaultnya adalah Masked. Opsional