Share via


Hızlı Başlangıç: Gerçek zamanlı dillere ayırma oluşturma

GitHub'da Başvuru belgeleri | Paketi (NuGet) | Ek Örnekler

Bu hızlı başlangıçta, gerçek zamanlı darizasyon ile konuşmayı metne dönüştürme transkripsiyonu için bir uygulama çalıştıracaksınız. Diarizasyon, konuşmaya katılan farklı konuşmacıları ayırt eder. Konuşma tanıma hizmeti, dökümü alınmış konuşmanın belirli bir bölümünde konuşan konuşmacı hakkında bilgi sağlar.

Konuşmacı bilgileri, konuşmacı kimliği alanına eklenir. Konuşmacı kimliği, sağlanan ses içeriğinden farklı konuşmacılar tanımlandığından tanıma sırasında hizmet tarafından her konuşma katılımcısına atanan genel bir tanımlayıcıdır.

İpucu

Speech Studio'da herhangi bir koda kaydolmadan veya yazmadan gerçek zamanlı konuşmayı metne dönüştürmeyi deneyebilirsiniz. Ancak, Speech Studio henüz silahsızlaştırmayı desteklemez.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun.
  • Azure portalında konuşma kaynağı oluşturun.
  • Konuşma kaynak anahtarınız ve bölgeniz. Konuşma kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Ortamı ayarlama

Konuşma SDK'sı bir NuGet paketi olarak kullanılabilir ve .NET Standard 2.0'ı uygular. Konuşma SDK'sını bu kılavuzun ilerleyen bölümlerinde yüklersiniz, ancak daha fazla gereksinim için önce SDK yükleme kılavuzunu gözden geçirin.

Ortam değişkenlerini belirleme

Azure AI hizmetleri kaynaklarına erişmek için uygulamanızın kimliğinin doğrulanması gerekir. Üretim için kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Örneğin, Konuşma kaynağınız için bir anahtar aldıktan sonra, uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için bkz. Azure AI hizmetleri güvenliği.

Konuşma kaynak anahtarınızın ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminiz ve geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini SPEECH_KEY ayarlamak için anahtarınızı kaynağınızın anahtarlarından biriyle değiştirin.
  • Ortam değişkenini SPEECH_REGION ayarlamak için bölgenizi kaynağınızın bölgelerinden biriyle değiştirin.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Not

Yalnızca geçerli konsoldaki ortam değişkenlerine erişmeniz gerekiyorsa, ortam değişkenini yerine setxile set ayarlayabilirsiniz.

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okuması gereken tüm programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Konuşma transkripsiyonu ile dosyadan ayırma uygulama

Konsol uygulaması oluşturmak ve Konuşma SDK'sını yüklemek için bu adımları izleyin.

  1. Yeni projeyi istediğiniz klasörde bir komut istemi penceresi açın. .NET CLI ile bir konsol uygulaması oluşturmak için bu komutu çalıştırın.

    dotnet new console
    

    Bu komut proje dizininizde Program.cs dosyasını oluşturur.

  2. .NET CLI ile yeni projenize Konuşma SDK'sını yükleyin.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. öğesinin içeriğini Program.cs aşağıdaki kodla değiştirin.

    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Microsoft.CognitiveServices.Speech.Transcription;
    
    class Program 
    {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY");
        static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION");
    
        async static Task Main(string[] args)
        {
            var filepath = "katiesteve.wav";
            var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);        
            speechConfig.SpeechRecognitionLanguage = "en-US";
    
            var stopRecognition = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
    
            // Create an audio stream from a wav file or from the default microphone
            using (var audioConfig = AudioConfig.FromWavFileInput(filepath))
            {
                // Create a conversation transcriber using audio stream input
                using (var conversationTranscriber = new ConversationTranscriber(speechConfig, audioConfig))
                {
                    conversationTranscriber.Transcribing += (s, e) =>
                    {
                        Console.WriteLine($"TRANSCRIBING: Text={e.Result.Text}");
                    };
    
                    conversationTranscriber.Transcribed += (s, e) =>
                    {
                        if (e.Result.Reason == ResultReason.RecognizedSpeech)
                        {
                            Console.WriteLine($"TRANSCRIBED: Text={e.Result.Text} Speaker ID={e.Result.SpeakerId}");
                        }
                        else if (e.Result.Reason == ResultReason.NoMatch)
                        {
                            Console.WriteLine($"NOMATCH: Speech could not be transcribed.");
                        }
                    };
    
                    conversationTranscriber.Canceled += (s, e) =>
                    {
                        Console.WriteLine($"CANCELED: Reason={e.Reason}");
    
                        if (e.Reason == CancellationReason.Error)
                        {
                            Console.WriteLine($"CANCELED: ErrorCode={e.ErrorCode}");
                            Console.WriteLine($"CANCELED: ErrorDetails={e.ErrorDetails}");
                            Console.WriteLine($"CANCELED: Did you set the speech resource key and region values?");
                            stopRecognition.TrySetResult(0);
                        }
    
                        stopRecognition.TrySetResult(0);
                    };
    
                    conversationTranscriber.SessionStopped += (s, e) =>
                    {
                        Console.WriteLine("\n    Session stopped event.");
                        stopRecognition.TrySetResult(0);
                    };
    
                    await conversationTranscriber.StartTranscribingAsync();
    
                    // Waits for completion. Use Task.WaitAny to keep the task rooted.
                    Task.WaitAny(new[] { stopRecognition.Task });
    
                    await conversationTranscriber.StopTranscribingAsync();
                }
            }
        }
    }
    
  4. Örnek ses dosyasını alın veya kendi .wav dosyanızı kullanın. değerini dosyanızın .wav yolu ve adıyla değiştirinkatiesteve.wav.

    Uygulama, konuşmadaki birden çok katılımcının konuşmasını tanır. Ses dosyanız birden çok hoparlör içermelidir.

  5. Konuşma tanıma dilini değiştirmek için öğesini desteklenen başka bir dille değiştirinen-US. Örneğin, es-ES İspanyolca (İspanya) için. Varsayılan dil, bir dil belirtmezseniz olur en-US . Konuşulabilecek birden çok dilden birini belirleme hakkında ayrıntılı bilgi için bkz . Dil belirleme.

  6. Konuşma transkripsiyonu başlatmak için konsol uygulamanızı çalıştırın:

    dotnet run
    

Önemli

ve SPEECH_REGIONortam değişkenlerini ayarladığınızdan SPEECH_KEY emin olun. Bu değişkenleri ayarlamazsanız örnek bir hata iletisiyle başarısız olur.

Dökümü alınan konuşmanın çıktısı metin olarak olmalıdır:

TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2
CANCELED: Reason=EndOfStream

Konuşmacılar, konuşmadaki konuşmacı sayısına bağlı olarak Konuk-1, Konuk-2 vb. olarak tanımlanır.

Kaynakları temizleme

Oluşturduğunuz Konuşma kaynağını kaldırmak için Azure portalını veya Azure Komut Satırı Arabirimi'ni (CLI) kullanabilirsiniz.

GitHub'da Başvuru belgeleri | Paketi (NuGet) | Ek Örnekler

Bu hızlı başlangıçta, gerçek zamanlı darizasyon ile konuşmayı metne dönüştürme transkripsiyonu için bir uygulama çalıştıracaksınız. Diarizasyon, konuşmaya katılan farklı konuşmacıları ayırt eder. Konuşma tanıma hizmeti, dökümü alınmış konuşmanın belirli bir bölümünde konuşan konuşmacı hakkında bilgi sağlar.

Konuşmacı bilgileri, konuşmacı kimliği alanına eklenir. Konuşmacı kimliği, sağlanan ses içeriğinden farklı konuşmacılar tanımlandığından tanıma sırasında hizmet tarafından her konuşma katılımcısına atanan genel bir tanımlayıcıdır.

İpucu

Speech Studio'da herhangi bir koda kaydolmadan veya yazmadan gerçek zamanlı konuşmayı metne dönüştürmeyi deneyebilirsiniz. Ancak, Speech Studio henüz silahsızlaştırmayı desteklemez.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun.
  • Azure portalında konuşma kaynağı oluşturun.
  • Konuşma kaynak anahtarınız ve bölgeniz. Konuşma kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Ortamı ayarlama

Konuşma SDK'sı bir NuGet paketi olarak kullanılabilir ve .NET Standard 2.0'ı uygular. Konuşma SDK'sını bu kılavuzun ilerleyen bölümlerinde yüklersiniz, ancak daha fazla gereksinim için önce SDK yükleme kılavuzunu gözden geçirin.

Ortam değişkenlerini belirleme

Azure AI hizmetleri kaynaklarına erişmek için uygulamanızın kimliğinin doğrulanması gerekir. Üretim için kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Örneğin, Konuşma kaynağınız için bir anahtar aldıktan sonra, uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için bkz. Azure AI hizmetleri güvenliği.

Konuşma kaynak anahtarınızın ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminiz ve geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini SPEECH_KEY ayarlamak için anahtarınızı kaynağınızın anahtarlarından biriyle değiştirin.
  • Ortam değişkenini SPEECH_REGION ayarlamak için bölgenizi kaynağınızın bölgelerinden biriyle değiştirin.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Not

Yalnızca geçerli konsoldaki ortam değişkenlerine erişmeniz gerekiyorsa, ortam değişkenini yerine setxile set ayarlayabilirsiniz.

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okuması gereken tüm programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Konuşma transkripsiyonu ile dosyadan ayırma uygulama

Konsol uygulaması oluşturmak ve Konuşma SDK'sını yüklemek için bu adımları izleyin.

  1. Visual Studio Community 2022'de adlı ConversationTranscriptionyeni bir C++ konsol projesi oluşturun.

  2. Araçlar>Nuget Paket Yöneticisi> Paket Yöneticisi Konsolu'nu seçin. Paket Yöneticisi Konsolu'nda şu komutu çalıştırın:

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. öğesinin içeriğini ConversationTranscription.cpp aşağıdaki kodla değiştirin.

    #include <iostream> 
    #include <stdlib.h>
    #include <speechapi_cxx.h>
    #include <future>
    
    using namespace Microsoft::CognitiveServices::Speech;
    using namespace Microsoft::CognitiveServices::Speech::Audio;
    using namespace Microsoft::CognitiveServices::Speech::Transcription;
    
    std::string GetEnvironmentVariable(const char* name);
    
    int main()
    {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        auto speechKey = GetEnvironmentVariable("SPEECH_KEY");
        auto speechRegion = GetEnvironmentVariable("SPEECH_REGION");
    
        if ((size(speechKey) == 0) || (size(speechRegion) == 0)) {
            std::cout << "Please set both SPEECH_KEY and SPEECH_REGION environment variables." << std::endl;
            return -1;
        }
    
        auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion);
    
        speechConfig->SetSpeechRecognitionLanguage("en-US");
    
        auto audioConfig = AudioConfig::FromWavFileInput("katiesteve.wav");
        auto conversationTranscriber = ConversationTranscriber::FromConfig(speechConfig, audioConfig);
    
        // promise for synchronization of recognition end.
        std::promise<void> recognitionEnd;
    
        // Subscribes to events.
        conversationTranscriber->Transcribing.Connect([](const ConversationTranscriptionEventArgs& e)
            {
                std::cout << "TRANSCRIBING:" << e.Result->Text << std::endl;
            });
    
        conversationTranscriber->Transcribed.Connect([](const ConversationTranscriptionEventArgs& e)
            {
                if (e.Result->Reason == ResultReason::RecognizedSpeech)
                {
                    std::cout << "TRANSCRIBED: Text=" << e.Result->Text << std::endl;
                    std::cout << "Speaker ID=" << e.Result->SpeakerId << std::endl;
                }
                else if (e.Result->Reason == ResultReason::NoMatch)
                {
                    std::cout << "NOMATCH: Speech could not be transcribed." << std::endl;
                }
            });
    
        conversationTranscriber->Canceled.Connect([&recognitionEnd](const ConversationTranscriptionCanceledEventArgs& e)
            {
                auto cancellation = CancellationDetails::FromResult(e.Result);
                std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
                if (cancellation->Reason == CancellationReason::Error)
                {
                    std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
                    std::cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                    std::cout << "CANCELED: Did you set the speech resource key and region values?" << std::endl;
                }
                else if (cancellation->Reason == CancellationReason::EndOfStream)
                {
                    std::cout << "CANCELED: Reach the end of the file." << std::endl;
                }
            });
    
        conversationTranscriber->SessionStopped.Connect([&recognitionEnd](const SessionEventArgs& e)
            {
                std::cout << "Session stopped.";
                recognitionEnd.set_value(); // Notify to stop recognition.
            });
    
        conversationTranscriber->StartTranscribingAsync().wait();
    
        // Waits for recognition end.
        recognitionEnd.get_future().wait();
    
        conversationTranscriber->StopTranscribingAsync().wait();
    }
    
    std::string GetEnvironmentVariable(const char* name)
    {
    #if defined(_MSC_VER)
        size_t requiredSize = 0;
        (void)getenv_s(&requiredSize, nullptr, 0, name);
        if (requiredSize == 0)
        {
            return "";
        }
        auto buffer = std::make_unique<char[]>(requiredSize);
        (void)getenv_s(&requiredSize, buffer.get(), requiredSize, name);
        return buffer.get();
    #else
        auto value = getenv(name);
        return value ? value : "";
    #endif
    }
    
  4. Örnek ses dosyasını alın veya kendi .wav dosyanızı kullanın. değerini dosyanızın .wav yolu ve adıyla değiştirinkatiesteve.wav.

    Uygulama, konuşmadaki birden çok katılımcının konuşmasını tanır. Ses dosyanız birden çok hoparlör içermelidir.

  5. Konuşma tanıma dilini değiştirmek için öğesini desteklenen başka bir dille değiştirinen-US. Örneğin, es-ES İspanyolca (İspanya) için. Varsayılan dil, bir dil belirtmezseniz olur en-US . Konuşulabilecek birden çok dilden birini belirleme hakkında ayrıntılı bilgi için bkz . Dil belirleme.

  6. Konuşma transkripsiyonu başlatmak için uygulamanızı derleyin ve çalıştırın :

    Önemli

    ve SPEECH_REGIONortam değişkenlerini ayarladığınızdan SPEECH_KEY emin olun. Bu değişkenleri ayarlamazsanız örnek bir hata iletisiyle başarısız olur.

Dökümü alınan konuşmanın çıktısı metin olarak olmalıdır:

TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2 
CANCELED: Reason=EndOfStream

Konuşmacılar, konuşmadaki konuşmacı sayısına bağlı olarak Konuk-1, Konuk-2 vb. olarak tanımlanır.

Kaynakları temizleme

Oluşturduğunuz Konuşma kaynağını kaldırmak için Azure portalını veya Azure Komut Satırı Arabirimi'ni (CLI) kullanabilirsiniz.

GitHub'da Başvuru belgeleri | Paketi (Go) | Ek Örnekler

Go için Konuşma SDK'sı konuşma transkripsiyonunu desteklemez. Lütfen bu makalenin başından itibaren başka bir programlama dili veya Go başvurusu ve bağlantılı örnekler seçin.

Başvuru belgeleri | GitHub'da Ek Örnekler

Bu hızlı başlangıçta, gerçek zamanlı darizasyon ile konuşmayı metne dönüştürme transkripsiyonu için bir uygulama çalıştıracaksınız. Diarizasyon, konuşmaya katılan farklı konuşmacıları ayırt eder. Konuşma tanıma hizmeti, dökümü alınmış konuşmanın belirli bir bölümünde konuşan konuşmacı hakkında bilgi sağlar.

Konuşmacı bilgileri, konuşmacı kimliği alanına eklenir. Konuşmacı kimliği, sağlanan ses içeriğinden farklı konuşmacılar tanımlandığından tanıma sırasında hizmet tarafından her konuşma katılımcısına atanan genel bir tanımlayıcıdır.

İpucu

Speech Studio'da herhangi bir koda kaydolmadan veya yazmadan gerçek zamanlı konuşmayı metne dönüştürmeyi deneyebilirsiniz. Ancak, Speech Studio henüz silahsızlaştırmayı desteklemez.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun.
  • Azure portalında konuşma kaynağı oluşturun.
  • Konuşma kaynak anahtarınız ve bölgeniz. Konuşma kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Ortamı ayarlama

Ortamınızı ayarlamak için Konuşma SDK'sını yükleyin. Bu hızlı başlangıçtaki örnek Java Çalışma Zamanı ile çalışır.

  1. Apache Maven'ı yükleyin. Ardından başarılı yüklemeyi onaylamak için komutunu çalıştırın mvn -v .

  2. Projenizin kökünde yeni pom.xml bir dosya oluşturun ve aşağıdakini içine kopyalayın:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.microsoft.cognitiveservices.speech.samples</groupId>
        <artifactId>quickstart-eclipse</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <build>
            <sourceDirectory>src</sourceDirectory>
            <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                <source>1.8</source>
                <target>1.8</target>
                </configuration>
            </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
            <groupId>com.microsoft.cognitiveservices.speech</groupId>
            <artifactId>client-sdk</artifactId>
            <version>1.37.0</version>
            </dependency>
        </dependencies>
    </project>
    
  3. Konuşma SDK'sını ve bağımlılıkları yükleyin.

    mvn clean dependency:copy-dependencies
    

Ortam değişkenlerini belirleme

Azure AI hizmetleri kaynaklarına erişmek için uygulamanızın kimliğinin doğrulanması gerekir. Üretim için kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Örneğin, Konuşma kaynağınız için bir anahtar aldıktan sonra, uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için bkz. Azure AI hizmetleri güvenliği.

Konuşma kaynak anahtarınızın ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminiz ve geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini SPEECH_KEY ayarlamak için anahtarınızı kaynağınızın anahtarlarından biriyle değiştirin.
  • Ortam değişkenini SPEECH_REGION ayarlamak için bölgenizi kaynağınızın bölgelerinden biriyle değiştirin.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Not

Yalnızca geçerli konsoldaki ortam değişkenlerine erişmeniz gerekiyorsa, ortam değişkenini yerine setxile set ayarlayabilirsiniz.

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okuması gereken tüm programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Konuşma transkripsiyonu ile dosyadan ayırma uygulama

Konuşma transkripsiyonu için bir konsol uygulaması oluşturmak için bu adımları izleyin.

  1. Aynı proje kök dizininde adlı ConversationTranscription.java yeni bir dosya oluşturun.

  2. Aşağıdaki kodu içine ConversationTranscription.javakopyalayın:

    import com.microsoft.cognitiveservices.speech.*;
    import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
    import com.microsoft.cognitiveservices.speech.transcription.*;
    
    import java.util.concurrent.Semaphore;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.Future;
    
    public class ConversationTranscription {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        private static String speechKey = System.getenv("SPEECH_KEY");
        private static String speechRegion = System.getenv("SPEECH_REGION");
    
        public static void main(String[] args) throws InterruptedException, ExecutionException {
    
            SpeechConfig speechConfig = SpeechConfig.fromSubscription(speechKey, speechRegion);
            speechConfig.setSpeechRecognitionLanguage("en-US");
            AudioConfig audioInput = AudioConfig.fromWavFileInput("katiesteve.wav");
    
            Semaphore stopRecognitionSemaphore = new Semaphore(0);
    
            ConversationTranscriber conversationTranscriber = new ConversationTranscriber(speechConfig, audioInput);
            {
                // Subscribes to events.
                conversationTranscriber.transcribing.addEventListener((s, e) -> {
                    System.out.println("TRANSCRIBING: Text=" + e.getResult().getText());
                });
    
                conversationTranscriber.transcribed.addEventListener((s, e) -> {
                    if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
                        System.out.println("TRANSCRIBED: Text=" + e.getResult().getText() + " Speaker ID=" + e.getResult().getSpeakerId() );
                    }
                    else if (e.getResult().getReason() == ResultReason.NoMatch) {
                        System.out.println("NOMATCH: Speech could not be transcribed.");
                    }
                });
    
                conversationTranscriber.canceled.addEventListener((s, e) -> {
                    System.out.println("CANCELED: Reason=" + e.getReason());
    
                    if (e.getReason() == CancellationReason.Error) {
                        System.out.println("CANCELED: ErrorCode=" + e.getErrorCode());
                        System.out.println("CANCELED: ErrorDetails=" + e.getErrorDetails());
                        System.out.println("CANCELED: Did you update the subscription info?");
                    }
    
                    stopRecognitionSemaphore.release();
                });
    
                conversationTranscriber.sessionStarted.addEventListener((s, e) -> {
                    System.out.println("\n    Session started event.");
                });
    
                conversationTranscriber.sessionStopped.addEventListener((s, e) -> {
                    System.out.println("\n    Session stopped event.");
                });
    
                conversationTranscriber.startTranscribingAsync().get();
    
                // Waits for completion.
                stopRecognitionSemaphore.acquire();
    
                conversationTranscriber.stopTranscribingAsync().get();
            }
    
            speechConfig.close();
            audioInput.close();
            conversationTranscriber.close();
    
            System.exit(0);
        }
    }
    
  3. Örnek ses dosyasını alın veya kendi .wav dosyanızı kullanın. değerini dosyanızın .wav yolu ve adıyla değiştirinkatiesteve.wav.

    Uygulama, konuşmadaki birden çok katılımcının konuşmasını tanır. Ses dosyanız birden çok hoparlör içermelidir.

  4. Konuşma tanıma dilini değiştirmek için öğesini desteklenen başka bir dille değiştirinen-US. Örneğin, es-ES İspanyolca (İspanya) için. Varsayılan dil, bir dil belirtmezseniz olur en-US . Konuşulabilecek birden çok dilden birini belirleme hakkında ayrıntılı bilgi için bkz . Dil belirleme.

  5. Konuşma transkripsiyonu başlatmak için yeni konsol uygulamanızı çalıştırın:

    javac ConversationTranscription.java -cp ".;target\dependency\*"
    java -cp ".;target\dependency\*" ConversationTranscription
    

Önemli

ve SPEECH_REGIONortam değişkenlerini ayarladığınızdan SPEECH_KEY emin olun. Bu değişkenleri ayarlamazsanız örnek bir hata iletisiyle başarısız olur.

Dökümü alınan konuşmanın çıktısı metin olarak olmalıdır:

TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning. Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=GUEST-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=GUEST-2
CANCELED: Reason=EndOfStream

Konuşmacılar, konuşmadaki konuşmacı sayısına bağlı olarak Konuk-1, Konuk-2 vb. olarak tanımlanır.

Kaynakları temizleme

Oluşturduğunuz Konuşma kaynağını kaldırmak için Azure portalını veya Azure Komut Satırı Arabirimi'ni (CLI) kullanabilirsiniz.

Başvuru belgeleri | Paketi (npm) | GitHub | Kitaplığı kaynak kodunda ek örnekler

Bu hızlı başlangıçta, gerçek zamanlı darizasyon ile konuşmayı metne dönüştürme transkripsiyonu için bir uygulama çalıştıracaksınız. Diarizasyon, konuşmaya katılan farklı konuşmacıları ayırt eder. Konuşma tanıma hizmeti, dökümü alınmış konuşmanın belirli bir bölümünde konuşan konuşmacı hakkında bilgi sağlar.

Konuşmacı bilgileri, konuşmacı kimliği alanına eklenir. Konuşmacı kimliği, sağlanan ses içeriğinden farklı konuşmacılar tanımlandığından tanıma sırasında hizmet tarafından her konuşma katılımcısına atanan genel bir tanımlayıcıdır.

İpucu

Speech Studio'da herhangi bir koda kaydolmadan veya yazmadan gerçek zamanlı konuşmayı metne dönüştürmeyi deneyebilirsiniz. Ancak, Speech Studio henüz silahsızlaştırmayı desteklemez.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun.
  • Azure portalında konuşma kaynağı oluşturun.
  • Konuşma kaynak anahtarınız ve bölgeniz. Konuşma kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Ortamı ayarlama

Ortamınızı ayarlamak için JavaScript için Konuşma SDK'sını yükleyin. Yalnızca paket adının yüklenmesini istiyorsanız komutunu çalıştırın npm install microsoft-cognitiveservices-speech-sdk. Kılavuzlu yükleme yönergeleri için bkz . SDK yükleme kılavuzu.

Ortam değişkenlerini belirleme

Azure AI hizmetleri kaynaklarına erişmek için uygulamanızın kimliğinin doğrulanması gerekir. Üretim için kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Örneğin, Konuşma kaynağınız için bir anahtar aldıktan sonra, uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için bkz. Azure AI hizmetleri güvenliği.

Konuşma kaynak anahtarınızın ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminiz ve geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini SPEECH_KEY ayarlamak için anahtarınızı kaynağınızın anahtarlarından biriyle değiştirin.
  • Ortam değişkenini SPEECH_REGION ayarlamak için bölgenizi kaynağınızın bölgelerinden biriyle değiştirin.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Not

Yalnızca geçerli konsoldaki ortam değişkenlerine erişmeniz gerekiyorsa, ortam değişkenini yerine setxile set ayarlayabilirsiniz.

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okuması gereken tüm programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Konuşma transkripsiyonu ile dosyadan ayırma uygulama

Konuşma transkripsiyonu için yeni bir konsol uygulaması oluşturmak için bu adımları izleyin.

  1. Yeni projeyi istediğiniz bir komut istemi penceresi açın ve adlı ConversationTranscription.jsyeni bir dosya oluşturun.

  2. JavaScript için Konuşma SDK'sını yükleyin:

    npm install microsoft-cognitiveservices-speech-sdk
    
  3. Aşağıdaki kodu içine ConversationTranscription.jskopyalayın:

    const fs = require("fs");
    const sdk = require("microsoft-cognitiveservices-speech-sdk");
    
    // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
    const speechConfig = sdk.SpeechConfig.fromSubscription(process.env.SPEECH_KEY, process.env.SPEECH_REGION);
    
    function fromFile() {
        const filename = "katiesteve.wav";
    
        let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync(filename));
        let conversationTranscriber = new sdk.ConversationTranscriber(speechConfig, audioConfig);
    
        var pushStream = sdk.AudioInputStream.createPushStream();
    
        fs.createReadStream(filename).on('data', function(arrayBuffer) {
            pushStream.write(arrayBuffer.slice());
        }).on('end', function() {
            pushStream.close();
        });
    
        console.log("Transcribing from: " + filename);
    
        conversationTranscriber.sessionStarted = function(s, e) {
            console.log("SessionStarted event");
            console.log("SessionId:" + e.sessionId);
        };
        conversationTranscriber.sessionStopped = function(s, e) {
            console.log("SessionStopped event");
            console.log("SessionId:" + e.sessionId);
            conversationTranscriber.stopTranscribingAsync();
        };
        conversationTranscriber.canceled = function(s, e) {
            console.log("Canceled event");
            console.log(e.errorDetails);
            conversationTranscriber.stopTranscribingAsync();
        };
        conversationTranscriber.transcribed = function(s, e) {
            console.log("TRANSCRIBED: Text=" + e.result.text + " Speaker ID=" + e.result.speakerId);
        };
    
        // Start conversation transcription
        conversationTranscriber.startTranscribingAsync(
            function () {},
            function (err) {
                console.trace("err - starting transcription: " + err);
            }
        );
    
    }
    fromFile();
    
  4. Örnek ses dosyasını alın veya kendi .wav dosyanızı kullanın. değerini dosyanızın .wav yolu ve adıyla değiştirinkatiesteve.wav.

    Uygulama, konuşmadaki birden çok katılımcının konuşmasını tanır. Ses dosyanız birden çok hoparlör içermelidir.

  5. Konuşma tanıma dilini değiştirmek için öğesini desteklenen başka bir dille değiştirinen-US. Örneğin, es-ES İspanyolca (İspanya) için. Varsayılan dil, bir dil belirtmezseniz olur en-US . Konuşulabilecek birden çok dilden birini belirleme hakkında ayrıntılı bilgi için bkz . Dil belirleme.

  6. Bir dosyadan konuşma tanımayı başlatmak için yeni konsol uygulamanızı çalıştırın:

    node.exe ConversationTranscription.js
    

Önemli

ve SPEECH_REGIONortam değişkenlerini ayarladığınızdan SPEECH_KEY emin olun. Bu değişkenleri ayarlamazsanız örnek bir hata iletisiyle başarısız olur.

Dökümü alınan konuşmanın çıktısı metin olarak olmalıdır:

SessionStarted event
SessionId:E87AFBA483C2481985F6C9AF719F616B
TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning, Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSCRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=Guest-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=Guest-2
Canceled event
undefined
SessionStopped event
SessionId:E87AFBA483C2481985F6C9AF719F616B

Konuşmacılar, konuşmadaki konuşmacı sayısına bağlı olarak Konuk-1, Konuk-2 vb. olarak tanımlanır.

Kaynakları temizleme

Oluşturduğunuz Konuşma kaynağını kaldırmak için Azure portalını veya Azure Komut Satırı Arabirimi'ni (CLI) kullanabilirsiniz.

Başvuru belgeleri | Paketi (İndir) | GitHub'da Ek Örnekler

Objective-C için Konuşma SDK'sı konuşma transkripsiyonunu destekler, ancak buraya henüz bir kılavuz eklemedik. Başlamak ve kavramlar hakkında bilgi edinmek için lütfen başka bir programlama dili seçin veya bu makalenin başındaki Objective-C başvurusuna ve bağlantılı örneklere bakın.

Başvuru belgeleri | Paketi (İndir) | GitHub'da Ek Örnekler

Swift için Konuşma SDK'sı konuşma transkripsiyonunu destekler, ancak buraya henüz bir kılavuz eklemedik. Başlamak ve kavramlar hakkında bilgi edinmek için lütfen başka bir programlama dili seçin veya bu makalenin başından itibaren bağlantılı Swift başvurusuna ve örneklerine bakın.

GitHub'da Başvuru belgeleri | Paketi (PyPi) | Ek Örnekler

Bu hızlı başlangıçta, gerçek zamanlı darizasyon ile konuşmayı metne dönüştürme transkripsiyonu için bir uygulama çalıştıracaksınız. Diarizasyon, konuşmaya katılan farklı konuşmacıları ayırt eder. Konuşma tanıma hizmeti, dökümü alınmış konuşmanın belirli bir bölümünde konuşan konuşmacı hakkında bilgi sağlar.

Konuşmacı bilgileri, konuşmacı kimliği alanına eklenir. Konuşmacı kimliği, sağlanan ses içeriğinden farklı konuşmacılar tanımlandığından tanıma sırasında hizmet tarafından her konuşma katılımcısına atanan genel bir tanımlayıcıdır.

İpucu

Speech Studio'da herhangi bir koda kaydolmadan veya yazmadan gerçek zamanlı konuşmayı metne dönüştürmeyi deneyebilirsiniz. Ancak, Speech Studio henüz silahsızlaştırmayı desteklemez.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun.
  • Azure portalında konuşma kaynağı oluşturun.
  • Konuşma kaynak anahtarınız ve bölgeniz. Konuşma kaynağınız dağıtıldıktan sonra anahtarları görüntülemek ve yönetmek için Kaynağa git'i seçin. Azure AI hizmetleri kaynakları hakkında daha fazla bilgi için bkz . Kaynağınızın anahtarlarını alma.

Ortamı ayarlama

Python için Konuşma SDK'sı Python Paket Dizini (PyPI) modülü olarak kullanılabilir. Python için Konuşma SDK'sı Windows, Linux ve macOS ile uyumludur.

  • Platformunuz için Microsoft Visual Studio için Visual C++ Yeniden Dağıtılabilir 2015, 2017, 2019 ve 2022'yi yüklemeniz gerekir. Bu paketi ilk kez yüklemek için yeniden başlatma gerekebilir.
  • Linux'ta x64 hedef mimarisini kullanmanız gerekir.

Python'ın 3.7 veya sonraki bir sürümünden bir sürümünü yükleyin. Daha fazla gereksinim için önce SDK yükleme kılavuzuna bakın.

Ortam değişkenlerini belirleme

Azure AI hizmetleri kaynaklarına erişmek için uygulamanızın kimliğinin doğrulanması gerekir. Üretim için kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Örneğin, Konuşma kaynağınız için bir anahtar aldıktan sonra, uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın.

İpucu

Anahtarı doğrudan kodunuz içinde eklemeyin ve asla herkese açık olarak göndermeyin. Azure Key Vault gibi daha fazla kimlik doğrulama seçeneği için bkz. Azure AI hizmetleri güvenliği.

Konuşma kaynak anahtarınızın ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminiz ve geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini SPEECH_KEY ayarlamak için anahtarınızı kaynağınızın anahtarlarından biriyle değiştirin.
  • Ortam değişkenini SPEECH_REGION ayarlamak için bölgenizi kaynağınızın bölgelerinden biriyle değiştirin.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Not

Yalnızca geçerli konsoldaki ortam değişkenlerine erişmeniz gerekiyorsa, ortam değişkenini yerine setxile set ayarlayabilirsiniz.

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okuması gereken tüm programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Konuşma transkripsiyonu ile dosyadan ayırma uygulama

Yeni bir konsol uygulaması oluşturmak için bu adımları izleyin.

  1. Yeni projeyi istediğiniz bir komut istemi penceresi açın ve adlı conversation_transcription.pyyeni bir dosya oluşturun.

  2. Konuşma SDK'sını yüklemek için şu komutu çalıştırın:

    pip install azure-cognitiveservices-speech
    
  3. Aşağıdaki kodu içine conversation_transcription.pykopyalayın:

    import os
    import time
    import azure.cognitiveservices.speech as speechsdk
    
    def conversation_transcriber_recognition_canceled_cb(evt: speechsdk.SessionEventArgs):
        print('Canceled event')
    
    def conversation_transcriber_session_stopped_cb(evt: speechsdk.SessionEventArgs):
        print('SessionStopped event')
    
    def conversation_transcriber_transcribed_cb(evt: speechsdk.SpeechRecognitionEventArgs):
        print('TRANSCRIBED:')
        if evt.result.reason == speechsdk.ResultReason.RecognizedSpeech:
            print('\tText={}'.format(evt.result.text))
            print('\tSpeaker ID={}'.format(evt.result.speaker_id))
        elif evt.result.reason == speechsdk.ResultReason.NoMatch:
            print('\tNOMATCH: Speech could not be TRANSCRIBED: {}'.format(evt.result.no_match_details))
    
    def conversation_transcriber_session_started_cb(evt: speechsdk.SessionEventArgs):
        print('SessionStarted event')
    
    def recognize_from_file():
        # This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION'))
        speech_config.speech_recognition_language="en-US"
    
        audio_config = speechsdk.audio.AudioConfig(filename="katiesteve.wav")
        conversation_transcriber = speechsdk.transcription.ConversationTranscriber(speech_config=speech_config, audio_config=audio_config)
    
        transcribing_stop = False
    
        def stop_cb(evt: speechsdk.SessionEventArgs):
            #"""callback that signals to stop continuous recognition upon receiving an event `evt`"""
            print('CLOSING on {}'.format(evt))
            nonlocal transcribing_stop
            transcribing_stop = True
    
        # Connect callbacks to the events fired by the conversation transcriber
        conversation_transcriber.transcribed.connect(conversation_transcriber_transcribed_cb)
        conversation_transcriber.session_started.connect(conversation_transcriber_session_started_cb)
        conversation_transcriber.session_stopped.connect(conversation_transcriber_session_stopped_cb)
        conversation_transcriber.canceled.connect(conversation_transcriber_recognition_canceled_cb)
        # stop transcribing on either session stopped or canceled events
        conversation_transcriber.session_stopped.connect(stop_cb)
        conversation_transcriber.canceled.connect(stop_cb)
    
        conversation_transcriber.start_transcribing_async()
    
        # Waits for completion.
        while not transcribing_stop:
            time.sleep(.5)
    
        conversation_transcriber.stop_transcribing_async()
    
    # Main
    
    try:
        recognize_from_file()
    except Exception as err:
        print("Encountered exception. {}".format(err))
    
  4. Örnek ses dosyasını alın veya kendi .wav dosyanızı kullanın. değerini dosyanızın .wav yolu ve adıyla değiştirinkatiesteve.wav.

    Uygulama, konuşmadaki birden çok katılımcının konuşmasını tanır. Ses dosyanız birden çok hoparlör içermelidir.

  5. Konuşma tanıma dilini değiştirmek için öğesini desteklenen başka bir dille değiştirinen-US. Örneğin, es-ES İspanyolca (İspanya) için. Varsayılan dil, bir dil belirtmezseniz olur en-US . Konuşulabilecek birden çok dilden birini belirleme hakkında ayrıntılı bilgi için bkz . Dil belirleme.

  6. Konuşma transkripsiyonu başlatmak için yeni konsol uygulamanızı çalıştırın:

    python conversation_transcription.py
    

Önemli

ve SPEECH_REGIONortam değişkenlerini ayarladığınızdan SPEECH_KEY emin olun. Bu değişkenleri ayarlamazsanız örnek bir hata iletisiyle başarısız olur.

Dökümü alınan konuşmanın çıktısı metin olarak olmalıdır:

SessionStarted event
TRANSCRIBED:
        Text=Good morning, Steve.
        Speaker ID=Unknown
TRANSCRIBED:
        Text=Good morning, Katie.
        Speaker ID=Unknown
TRANSCRIBED:
        Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time?
        Speaker ID=Guest-1
TRANSCRIBED:
        Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed.
        Speaker ID=Guest-2
TRANSCRIBED:
        Text=Is the new feature can diarize in real time?
        Speaker ID=Guest-2
TRANSCRIBED:
        Text=Absolutely.
        Speaker ID=Guest-1
TRANSCRIBED:
        Text=That's exciting. Let me try it right now.
        Speaker ID=Guest-2
Canceled event
CLOSING on ConversationTranscriptionCanceledEventArgs(session_id=92a0abb68636471dac07041b335d9be3, result=ConversationTranscriptionResult(result_id=ad1b1d83b5c742fcacca0692baa8df74, speaker_id=, text=, reason=ResultReason.Canceled))
SessionStopped event
CLOSING on SessionEventArgs(session_id=92a0abb68636471dac07041b335d9be3)

Konuşmacılar, konuşmadaki konuşmacı sayısına bağlı olarak Konuk-1, Konuk-2 vb. olarak tanımlanır.

Kaynakları temizleme

Oluşturduğunuz Konuşma kaynağını kaldırmak için Azure portalını veya Azure Komut Satırı Arabirimi'ni (CLI) kullanabilirsiniz.

Konuşmayı metne dönüştürme REST API başvurusu | Kısa ses başvurusu için metin REST API'sine konuşma | GitHub'da Ek Örnekler

REST API konuşma transkripsiyonunu desteklemez. Lütfen bu sayfanın üst kısmından başka bir programlama dili veya aracı seçin.

Konuşma CLI'sı konuşma transkripsiyonunu desteklemez. Lütfen bu sayfanın üst kısmından başka bir programlama dili veya aracı seçin.

Sonraki adım