Konuşma CLI'sı ile toplu işlem çalıştırma
Konuşma hizmetini kullanırken sık kullanılan görevler toplu işlemlerdir. Bu makalede, Konuşma CLI'sı ile toplu konuşmayı metne dönüştürme (konuşma tanıma), toplu metin okuma (konuşma sentezi) yapmayı öğreneceksiniz. Özellikle şunların nasıl yapılacağını öğrenirsiniz:
- Ses dosyalarının dizininde toplu konuşma tanımayı çalıştırma
- Dosya
.tsv
üzerinde yineleme yaparak toplu konuşma sentezi çalıştırma
Toplu konuşmayı metne dönüştürme (konuşma tanıma)
Konuşma tanıma hizmeti genellikle ses dosyalarındaki konuşmayı tanımak için kullanılır. Bu örnekte, her .wav
dosyanın tanıma çıkışını yakalamak için Konuşma CLI'sini kullanarak bir dizin üzerinde yineleme yapmayı öğreneceksiniz. Bayrağı--files
, ses dosyalarının depolandığı dizine işaret etmek için kullanılır ve Konuşma CLI'sine uzantısına .wav
sahip her dosyada tanımayı çalıştırmasını bildirmek için joker karakter *.wav
kullanılır. Her tanıma dosyasının çıkışı, içinde speech_output.tsv
sekmeyle ayrılmış değer olarak yazılır.
Not
--threads
Bağımsız değişken, komutlar için spx synthesize
sonraki bölümde de kullanılabilir ve kullanılabilir iş parçacıkları CPU'ya ve geçerli yük yüzdesine bağlıdır.
spx recognize --files C:\your_wav_file_dir\*.wav --output file C:\output_dir\speech_output.tsv --threads 10
Çıktı dosyası yapısının bir örneği aşağıda verilmişti.
audio.input.id recognizer.session.started.sessionid recognizer.recognized.result.text
sample_1 07baa2f8d9fd4fbcb9faea451ce05475 A sample wave file.
sample_2 8f9b378f6d0b42f99522f1173492f013 Sample text synthesized.
Toplu metin okuma (konuşma sentezi)
Toplu metni konuşmaya çalıştırmanın en kolay yolu, yeni .tsv
bir (sekmeyle ayrılmış değer) dosyası oluşturmak ve Konuşma CLI'sında komutunu kullanmaktır --foreach
. Sık kullandığınız metin düzenleyiciyi kullanarak bir .tsv
dosya oluşturabilirsiniz. Örneğin, şu adı text_synthesis.tsv
verelim:
Önemli
Bu metin dosyasının içeriğini kopyalarken, dosyanızın konumu ile metin arasında boşluklar olmayan bir sekme olduğundan emin olun. Bazen, bu örnekteki içerik kopyalanırken sekmeler boşluklara dönüştürülür ve bu da komutun spx
çalıştırıldığında başarısız olmasına neden olur.
audio.output text
C:\batch_wav_output\wav_1.wav Sample text to synthesize.
C:\batch_wav_output\wav_2.wav Using the Speech CLI to run batch-synthesis.
C:\batch_wav_output\wav_3.wav Some more text to test capabilities.
Ardından, öğesini işaret text_synthesis.tsv
eden bir komut çalıştırırsınız, her text
alanda sentez gerçekleştirir ve sonucu ilgili audio.output
yola dosya .wav
olarak yazarsınız.
spx synthesize --foreach in @C:\your\path\to\text_synthesis.tsv
Bu komut, dosyadaki her kayıt için çalıştırmanın spx synthesize --text "Sample text to synthesize" --audio output C:\batch_wav_output\wav_1.wav
eşdeğeridir.tsv
.
Dikkate alınacak birkaç nokta:
- ve sütun başlıkları,
audio.output
text
sırasıyla komut satırı bağımsız değişkenlerine--audio output
ve--text
öğesine karşılık gelir. gibi--audio output
çok parçalı komut satırı bağımsız değişkenleri dosyada boşluksuz, başta tire olmadan ve dizeleri ayıran noktalarla biçimlendirilmelidir. Örneğin,audio.output
. Var olan diğer tüm komut satırı bağımsız değişkenleri, bu desen kullanılarak dosyaya daha fazla sütun olarak eklenebilir. - Dosya bu şekilde biçimlendirildiğinde, öğesine başka hiçbir bağımsız değişkenin geçirilmesi
--foreach
gerekmez. - içindeki her değeri
.tsv
bir sekmeyle ayırdığından emin olun.
Bununla birlikte, aşağıdaki örneğe benzer bir .tsv
dosyanız varsa ve komut satırı bağımsız değişkenleriyle eşleşmeyen sütun başlıkları varsa:
wav_path str_text
C:\batch_wav_output\wav_1.wav Sample text to synthesize.
C:\batch_wav_output\wav_2.wav Using the Speech CLI to run batch-synthesis.
C:\batch_wav_output\wav_3.wav Some more text to test capabilities.
Çağrıda aşağıdaki söz dizimini --foreach
kullanarak bu alan adlarını doğru bağımsız değişkenlerle geçersiz kılabilirsiniz. Bu komut, öncekiyle aynı çağrıyı yapar.
spx synthesize --foreach audio.output;text in @C:\your\path\to\text_synthesis.tsv