Konuşma kapsayıcıları için toplu işleme kiti

Konuşma konteynerlarında iş yüklerini desteklemek ve ölçeklendirmek için toplu işleme kitini kullanın. Kapsayıcı olarak kullanılabilen bu açık kaynak yardımcı programı, çok sayıda şirket içi ve bulut tabanlı konuşma kapsayıcısı uç noktasında çok sayıda ses dosyası için toplu transkripsiyonu kolaylaştırmanıza yardımcı olur.

Örnek batch-kit kapsayıcı iş akışını gösteren diyagram.

Batch kit kapsayıcısı GitHub ve Docker hub'larında ücretsiz olarak kullanılabilir. Yalnızca kullandığınız Konuşma kapsayıcıları için faturalandırılırsınız .

Özellik Açıklama
Toplu ses dosyası dağıtımı Şirket içi veya bulut tabanlı Konuşma kapsayıcısı uç noktalarına çok sayıda dosyayı otomatik olarak dağıtın. Dosyalar, ağ dosya sistemleri de dahil olmak üzere POSIX uyumlu herhangi bir birimde olabilir.
Konuşma SDK'sı entegrasyonu Konuşma SDK'sına şu ortak bayrakları geçirin: n-en-iyi hipotezler, diyerizasyon, dil, küfür maskeleme.
Çalıştırma modları Batch istemcisini arka planda sürekli olarak bir kez çalıştırın veya ses dosyaları için HTTP uç noktaları oluşturun.
Hataya dayanıklılık İlerlemeyi kaybetmeden transkripsiyonu otomatik olarak yeniden deneyin ve devam edin ve hangi hataların yeniden denenebileceğini ve yeniden denenemeyeceklerini ayırt edin.
Uç nokta kullanılabilirliği algılama Bir uç nokta kullanılamaz duruma gelirse, toplu iş istemcisi diğer kapsayıcı uç noktalarını kullanarak dönüştürmeye devam eder. İstemci kullanılabilir olduğunda otomatik olarak uç noktayı kullanmaya başlar.
Çalışırken uç nokta değiştirme Toplu iş ilerleme durumunu kesintiye uğratmadan çalışma zamanı sırasında Konuşma kapsayıcısı uç noktalarını ekleyin, kaldırın veya değiştirin. Güncellemeler anında yapılır.
Gerçek zamanlı günlük kaydı Denemeye çalışılan isteklerin, zaman damgalarının ve hata nedenlerinin, her ses dosyası için Konuşma SDK'sı günlük dosyalarıyla birlikte gerçek zamanlı olarak kaydedilmesi.

Uzun sesi güvenli bir şekilde işleme

Konuşma kapsayıcıları, en fazla 24 saat süreyle sesi destekler. Döküm için göndermeden önce sesi 24 saatten uzun bir süre segmentlere ayırma. Kodlama, örnek hızı, bit derinliği ve kanal sayısı bayt sayısını belirlediğinden, dosya boyutu sürenin yerini tutmaz. Örneğin, 1 GB evrensel bir segmentasyon eşiği değildir.

Bazı ses işlem hatları, süreyi hesaplamak için 32 bit sayacı kullanır. Yaklaşık 37,3 saat içinde sayaç taşabilir ve daha kısa, geçerli görünümlü bir süre üretebilir. Bu durumda transkripsiyon, sonucun kesildiği konusunda uyarıda bulunmadan başarılı olduğunu bildirebilir. Bu taşma işleminin tam kod konumu bilinmiyor.

Transkripsiyonun ardından, orijinal sesin süresini transkriptin son ofset değeriyle veya en son algılanan zaman damgasıyla karşılaştırın. Transkripsiyon başarılı olduğunu bildirse bile, kaynak ses kaydından belirgin ölçüde daha önce sona eren bir sonucu tamamlanmamış olarak değerlendirin.

Kaynak sesi RIFF/WAV'a dönüştürürseniz taşma oluştuğu yeri belirlemeye yardımcı olması için şu değerleri kullanın:

  • 274,568,704 baytlık dönüştürülmüş WAV veri öbeği uzunluğu, dönüştürme veya dosya yazma sırasında bir taşma olduğunu gösterir.
  • Bayt veri 4,569,536,000 öbeği uzunluğu veya doğru üst bilgiye sahip 4 GB'tan büyük bir dosya, dosyanın doğru yazıldığını ve taşma işleminin daha sonra işlem hattında gerçekleştiğini gösterir. Bu durum için mühendislik ekibini devreye almak üzere Microsoft desteğine başvurun.

RF64 ve Wave64 (W64), bu soruna yönelik doğrudan uygulanabilir çözümler değildir. İşlem hattındaki her okuyucu ve süre denetimi yolu seçili biçimi desteklemelidir. Örneğin, Python yerleşik wave modülü RF64 dosyalarını reddeder.

docker pull ile kapsayıcı görüntüsünü al

En son batch kit kapsayıcısını indirmek için docker pull komutunu kullanın.

Not

Aşağıdaki örnek, Docker Hub'dan halka açık bir container görüntüsü çeker. Anonim çekme isteğinde bulunmak yerine önce Docker Hub hesabınızla (docker login) kimlik doğrulaması yapmanızı öneririz. Genel içerik kullanırken güvenilirliği artırmak için görüntüyü özel bir Azure kapsayıcı kayıt defterinde içeri aktarın ve yönetin. Genel görüntülerle çalışma hakkında daha fazla bilgi edinin.

docker pull docker.io/batchkit/speech-batch-kit:latest

Uç nokta yapılandırması

Batch istemcisi, şirket içi kapsayıcı uç noktalarını belirten bir YAML yapılandırma dosyası kullanır. Aşağıdaki örneği, aşağıdaki örneklerde kullanılan /mnt/my_nfs/config.yaml öğesine yazın.

MyContainer1:
  concurrency: 5
  host: 192.168.0.100
  port: 5000
  rtf: 3
MyContainer2:
  concurrency: 5
  host: BatchVM0.corp.redmond.microsoft.com
  port: 5000
  rtf: 2
MyContainer3:
  concurrency: 10
  host: localhost
  port: 6001
  rtf: 4

Bu YAML örneği, üç ana bilgisayarda üç konuşma kapsayıcısı tanımlar. İlk konak bir IPv4 adresi tarafından belirtilir, ikinci konak toplu iş istemcisiyle aynı VM'de çalışır ve üçüncü kapsayıcı başka bir VM'nin DNS ana bilgisayar adıyla belirtilir. değeri, concurrency aynı kapsayıcıda çalışabilecek en fazla eşzamanlı dosya transkripsiyonunu belirtir. rtf (Gerçek Zamanlı Faktör) değeri isteğe bağlıdır ve performansı ayarlamak için kullanılabilir.

Batch istemcisi, bir uç noktanın kullanılamaz duruma gelip geldiğini (örneğin, kapsayıcı yeniden başlatma veya ağ sorunu nedeniyle) ve yeniden kullanılabilir duruma geldiğinde dinamik olarak algılayabilir. Transkripsiyon istekleri kullanılamayan kapsayıcılara gönderilmez ve istemci diğer kullanılabilir kapsayıcıları kullanmaya devam eder. Toplu işleminizin ilerleme durumunu kesintiye uğratmadan istediğiniz zaman uç noktaları ekleyebilir, kaldırabilir veya düzenleyebilirsiniz.

Toplu işlem kapsayıcısını çalıştırın

 

Not

  • Bu örnek, yapılandırma dosyası ve girişler, çıkışlar ve günlük dizinleri için aynı dizini (/my_nfs) kullanır. Bu klasörler için barındırılan veya NFS'ye bağlı dizinleri kullanabilirsiniz.
  • İstemciyi bayrağıyla –h çalıştırmak, kullanılabilir komut satırı parametrelerini ve bunların varsayılan değerlerini listeler. 
  • Toplu işlem kapsayıcısı yalnızca Linux üzerinde desteklenir.

Kapsayıcıyı başlatmak için Docker run komutunu kullanın. Bu komut kapsayıcı içinde etkileşimli bir kabuk başlatır.

docker run --network host --rm -ti -v /mnt/my_nfs:/my_nfs --entrypoint /bin/bash /mnt/my_nfs:/my_nfs docker.io/batchkit/speech-batch-kit:latest

Batch istemcisini çalıştırmak için:

run-batch-client -config /my_nfs/config.yaml -input_folder /my_nfs/audio_files -output_folder /my_nfs/transcriptions -log_folder /my_nfs/logs -file_log_level DEBUG -nbest 1 -m ONESHOT -diarization None -language en-US -strict_config

Batch istemcisini ve kapsayıcısını tek bir komutta çalıştırmak için:

docker run --network host --rm -ti -v /mnt/my_nfs:/my_nfs docker.io/batchkit/speech-batch-kit:latest -config /my_nfs/config.yaml -input_folder /my_nfs/audio_files -output_folder /my_nfs/transcriptions -log_folder /my_nfs/logs

İstemci çalışmaya başlar. Önceki bir çalıştırmada bir ses dosyasının dökümü alınmışsa, istemci dosyayı otomatik olarak atlar. Dosyalar, geçici hatalar oluşursa otomatik yeniden deneme ile gönderilir ve istemcinin yeniden denemesini istediğiniz hataları ayırt edebilirsiniz. Transkripsiyon hatasında istemci transkripsiyona devam eder ve ilerlemeyi kaybetmeden yeniden deneyebilir.

Çalıştırma modları

Toplu işlem seti, parametresini --run-mode kullanarak üç mod sunar.

ONESHOT modu, tek bir ses dosyası grubunun (giriş dizinindeki ve isteğe bağlı dosya listesindeki) yazıya dökümünü çıkış klasörüne yapar.

Tek seferlik modda batch-kit kapsayıcı işleme dosyalarını gösteren diyagram.

  1. Batch istemcisinin config.yaml dosyasında kullandığı Konuşma kapsayıcısı uç noktalarını tanımlayın.
  2. Transkripsiyon için ses dosyalarını giriş dizinine yerleştirin.
  3. Dosyaları işlemeye başlamak için dizindeki kapsayıcıyı çağırın. Ses dosyası önceki bir işlemde aynı çıkış dizini (aynı dosya adı ve sağlama toplamı) kullanılarak transkripsiyonu yapılmışsa, istemci dosyayı atlar.
  4. Dosyalar, 1. adımdaki kapsayıcı uç noktalarına gönderilir.
  5. Günlükler ve Konuşma kapsayıcısı çıktıları belirtilen çıkış dizininde yer alacaktır.

Loglama

Not

Batch istemcisi, run.log dosyasının boyutu çok büyük olduğunda, üzerine düzenli aralıklarla yazabilir.

İstemci, docker komutunda -log_folder bağımsız değişkeni tarafından belirtilen dizinde bir run dosyası oluşturur. Günlükler varsayılan olarak DEBUG düzeyinde yakalanır. Aynı günlükler stdout/stderr öğesine gönderilir ve -file_log_level veya console_log_level bağımsız değişkenlerine bağlı olarak filtrelenir. Bu günlük yalnızca hata ayıklama için veya destek için bir izleme göndermeniz gerekiyorsa gereklidir. Günlük klasörü, her ses dosyası için Konuşma SDK'sı günlüklerini de içerir.

tarafından -output_folder belirtilen çıkış dizini, 30 saniyede bir veya yeni transkripsiyonlar tamamlandığında düzenli aralıklarla yeniden yazılan bir run_summary.json dosyası içerir. Toplu işlem devam ederken ilerleme durumunu denetlemek için bu dosyayı kullanabilirsiniz. Ayrıca, toplu işlem tamamlandığında her dosyanın son çalıştırma istatistiklerini ve son durumunu içerir. İşlem temiz bir çıkışa sahip olduğunda toplu iş tamamlanır.

Sonraki adımlar