Краткое руководство. Создание диаризации в режиме реального времени
Справочная документация | Пакет (NuGet) | Дополнительные примеры в GitHub
В этом кратком руководстве вы запустите приложение для преобразования речи в текст с диаризации в режиме реального времени. Диаризация различает различных докладчиков, участвующих в беседе. Служба "Речь" предоставляет сведения о том, какой докладчик говорил определенную часть транскрибированного речи.
Сведения о динамике включаются в результат в поле идентификатора говорящего. Идентификатор говорящего — это универсальный идентификатор, назначенный каждому участнику беседы службой во время распознавания, так как различные динамики определяются из предоставленного звукового содержимого.
Совет
Вы можете попробовать речь в режиме реального времени на текст в Speech Studio без регистрации или написания кода. Тем не менее, Speech Studio пока не поддерживает диаризацию.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Создайте ресурс службы "Речь" в портал Azure.
- Ключ ресурса службы "Речь" и регион. После развертывания ресурса службы "Речь" выберите Перейти к ресурсу для просмотра ключей и управления ими. Дополнительные сведения о ресурсах служб ИИ Azure см. в разделе "Получение ключей" для ресурса.
Настройка среды
Пакет SDK для службы "Речь" доступен в виде пакета NuGet и реализует .NET Standard 2.0. Вы установите пакет SDK службы "Речь" далее в этом руководстве, но сначала проверка руководство по установке пакета SDK для дополнительных требований.
Настройка переменных среды
Приложение должно пройти проверку подлинности для доступа к ресурсам служб ИИ Azure. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным,. Например, после получения ключа для ресурса "Речь" напишите его в новую переменную среды на локальном компьютере, на котором выполняется приложение.
Совет
Не включайте ключ непосредственно в код и никогда не публикуйте его. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье "Безопасность служб искусственного интеллекта Azure".
Чтобы задать переменную среды для ключа ресурса "Речь", откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
SPEECH_KEY
переменную среды, замените ключ одним из ключей ресурса. - Чтобы задать
SPEECH_REGION
переменную среды, замените регион одним из регионов для ресурса.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Примечание.
Если вам нужно получить доступ только к переменным среды в текущей консоли, можно задать переменную set
среды вместо setx
.
После добавления переменных среды может потребоваться перезапустить все программы, которые должны считывать переменную среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.
Реализация диаризации из файла с транскрибированием беседы
Выполните следующие действия, чтобы создать консольное приложение и установить пакет SDK службы "Речь".
Откройте окно командной строки в папке, в которой требуется создать проект. Выполните эту команду, чтобы создать консольное приложение с помощью .NET CLI.
dotnet new console
Эта команда создает файл Program.cs в каталоге проекта.
Установите пакет SDK для службы "Речь" в новом проекте с помощью CLI .NET.
dotnet add package Microsoft.CognitiveServices.Speech
Замените все содержимое
Program.cs
следующим кодом: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(); } } } }
Получите пример звукового файла или используйте собственный
.wav
файл. Заменитеkatiesteve.wav
путь и имя файла.wav
.Приложение распознает речь нескольких участников беседы. Звуковой файл должен содержать несколько динамиков.
Чтобы изменить язык распознавания речи, замените
en-US
на другой поддерживаемый язык. Например,es-ES
для испанского (Испания). Если язык не указан, по умолчанию используетсяen-US
. Дополнительные сведения о том, как определить один из нескольких языков, на которых могут говорить, см. в разделе Определение языка.Запустите консольное приложение, чтобы начать транскрибирование бесед:
dotnet run
Внимание
Убедитесь, что заданы SPEECH_KEY
переменные среды и SPEECH_REGION
среды. Если эти переменные не заданы, образец завершается ошибкой с сообщением об ошибке.
Транскрибированные беседы должны выводиться в виде текста:
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
Докладчики определяются как гостевой-1, гостевой-2 и т. д. в зависимости от количества докладчиков в беседе.
Очистка ресурсов
Для удаления созданного ресурса службы "Речь" можно использовать портал Azure или интерфейс командной строки (CLI) Azure.
Справочная документация | Пакет (NuGet) | Дополнительные примеры в GitHub
В этом кратком руководстве вы запустите приложение для преобразования речи в текст с диаризации в режиме реального времени. Диаризация различает различных докладчиков, участвующих в беседе. Служба "Речь" предоставляет сведения о том, какой докладчик говорил определенную часть транскрибированного речи.
Сведения о динамике включаются в результат в поле идентификатора говорящего. Идентификатор говорящего — это универсальный идентификатор, назначенный каждому участнику беседы службой во время распознавания, так как различные динамики определяются из предоставленного звукового содержимого.
Совет
Вы можете попробовать речь в режиме реального времени на текст в Speech Studio без регистрации или написания кода. Тем не менее, Speech Studio пока не поддерживает диаризацию.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Создайте ресурс службы "Речь" в портал Azure.
- Ключ ресурса службы "Речь" и регион. После развертывания ресурса службы "Речь" выберите Перейти к ресурсу для просмотра ключей и управления ими. Дополнительные сведения о ресурсах служб ИИ Azure см. в разделе "Получение ключей" для ресурса.
Настройка среды
Пакет SDK для службы "Речь" доступен в виде пакета NuGet и реализует .NET Standard 2.0. Вы установите пакет SDK службы "Речь" далее в этом руководстве, но сначала проверка руководство по установке пакета SDK для дополнительных требований.
Настройка переменных среды
Приложение должно пройти проверку подлинности для доступа к ресурсам служб ИИ Azure. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным,. Например, после получения ключа для ресурса "Речь" напишите его в новую переменную среды на локальном компьютере, на котором выполняется приложение.
Совет
Не включайте ключ непосредственно в код и никогда не публикуйте его. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье "Безопасность служб искусственного интеллекта Azure".
Чтобы задать переменную среды для ключа ресурса "Речь", откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
SPEECH_KEY
переменную среды, замените ключ одним из ключей ресурса. - Чтобы задать
SPEECH_REGION
переменную среды, замените регион одним из регионов для ресурса.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Примечание.
Если вам нужно получить доступ только к переменным среды в текущей консоли, можно задать переменную set
среды вместо setx
.
После добавления переменных среды может потребоваться перезапустить все программы, которые должны считывать переменную среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.
Реализация диаризации из файла с транскрибированием беседы
Выполните следующие действия, чтобы создать консольное приложение и установить пакет SDK службы "Речь".
Создайте проект консоли C++ в Visual Studio Community 2022 с именем
ConversationTranscription
.Выберите инструменты>Nuget диспетчер пакетов> диспетчер пакетов консоли. В консоли диспетчер пакетов выполните следующую команду:
Install-Package Microsoft.CognitiveServices.Speech
Замените все содержимое
ConversationTranscription.cpp
следующим кодом:#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 }
Получите пример звукового файла или используйте собственный
.wav
файл. Заменитеkatiesteve.wav
путь и имя файла.wav
.Приложение распознает речь нескольких участников беседы. Звуковой файл должен содержать несколько динамиков.
Чтобы изменить язык распознавания речи, замените
en-US
на другой поддерживаемый язык. Например,es-ES
для испанского (Испания). Если язык не указан, по умолчанию используетсяen-US
. Дополнительные сведения о том, как определить один из нескольких языков, на которых могут говорить, см. в разделе Определение языка.Создайте и запустите приложение, чтобы начать транскрибирование бесед:
Внимание
Убедитесь, что заданы
SPEECH_KEY
переменные среды иSPEECH_REGION
среды. Если эти переменные не заданы, образец завершается ошибкой с сообщением об ошибке.
Транскрибированные беседы должны выводиться в виде текста:
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
Докладчики определяются как гостевой-1, гостевой-2 и т. д. в зависимости от количества докладчиков в беседе.
Очистка ресурсов
Для удаления созданного ресурса службы "Речь" можно использовать портал Azure или интерфейс командной строки (CLI) Azure.
Справочная документация | Пакет (Go) | Дополнительные примеры в GitHub
Пакет SDK службы "Речь" для Go не поддерживает транскрибирование бесед. Выберите другой язык программирования или обратитесь к справочнику и примерам для языка Go, ссылки на которые приведены в начале этой статьи.
Справочная документация | Дополнительные примеры в GitHub
В этом кратком руководстве вы запустите приложение для преобразования речи в текст с диаризации в режиме реального времени. Диаризация различает различных докладчиков, участвующих в беседе. Служба "Речь" предоставляет сведения о том, какой докладчик говорил определенную часть транскрибированного речи.
Сведения о динамике включаются в результат в поле идентификатора говорящего. Идентификатор говорящего — это универсальный идентификатор, назначенный каждому участнику беседы службой во время распознавания, так как различные динамики определяются из предоставленного звукового содержимого.
Совет
Вы можете попробовать речь в режиме реального времени на текст в Speech Studio без регистрации или написания кода. Тем не менее, Speech Studio пока не поддерживает диаризацию.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Создайте ресурс службы "Речь" в портал Azure.
- Ключ ресурса службы "Речь" и регион. После развертывания ресурса службы "Речь" выберите Перейти к ресурсу для просмотра ключей и управления ими. Дополнительные сведения о ресурсах служб ИИ Azure см. в разделе "Получение ключей" для ресурса.
Настройка среды
Чтобы настроить среду, установите пакет SDK службы "Речь". Пример, приведенный в этом кратком руководстве, работает со средой выполнения Java.
Установите Apache Maven. Затем выполните команду
mvn -v
, чтобы подтвердить успешную установку.В корне проекта создайте файл с именем
pom.xml
и скопируйте в него следующее содержимое:<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>
Установите пакет SDK службы "Речь" и зависимости.
mvn clean dependency:copy-dependencies
Настройка переменных среды
Приложение должно пройти проверку подлинности для доступа к ресурсам служб ИИ Azure. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным,. Например, после получения ключа для ресурса "Речь" напишите его в новую переменную среды на локальном компьютере, на котором выполняется приложение.
Совет
Не включайте ключ непосредственно в код и никогда не публикуйте его. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье "Безопасность служб искусственного интеллекта Azure".
Чтобы задать переменную среды для ключа ресурса "Речь", откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
SPEECH_KEY
переменную среды, замените ключ одним из ключей ресурса. - Чтобы задать
SPEECH_REGION
переменную среды, замените регион одним из регионов для ресурса.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Примечание.
Если вам нужно получить доступ только к переменным среды в текущей консоли, можно задать переменную set
среды вместо setx
.
После добавления переменных среды может потребоваться перезапустить все программы, которые должны считывать переменную среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.
Реализация диаризации из файла с транскрибированием беседы
Выполните следующие действия, чтобы создать консольное приложение для транскрибирования бесед.
Создайте новый файл с именем
ConversationTranscription.java
в том же корневом каталоге проекта.Скопируйте в файл
ConversationTranscription.java
следующий код: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); } }
Получите пример звукового файла или используйте собственный
.wav
файл. Заменитеkatiesteve.wav
путь и имя файла.wav
.Приложение распознает речь нескольких участников беседы. Звуковой файл должен содержать несколько динамиков.
Чтобы изменить язык распознавания речи, замените
en-US
на другой поддерживаемый язык. Например,es-ES
для испанского (Испания). Если язык не указан, по умолчанию используетсяen-US
. Дополнительные сведения о том, как определить один из нескольких языков, на которых могут говорить, см. в разделе Определение языка.Запустите новое консольное приложение, чтобы начать транскрибирование бесед:
javac ConversationTranscription.java -cp ".;target\dependency\*" java -cp ".;target\dependency\*" ConversationTranscription
Внимание
Убедитесь, что заданы SPEECH_KEY
переменные среды и SPEECH_REGION
среды. Если эти переменные не заданы, образец завершается ошибкой с сообщением об ошибке.
Транскрибированные беседы должны выводиться в виде текста:
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
Докладчики определяются как гостевой-1, гостевой-2 и т. д. в зависимости от количества докладчиков в беседе.
Очистка ресурсов
Для удаления созданного ресурса службы "Речь" можно использовать портал Azure или интерфейс командной строки (CLI) Azure.
Справочная документация | Пакет (npm) | Дополнительные примеры в GitHub | Исходный код библиотеки
В этом кратком руководстве вы запустите приложение для преобразования речи в текст с диаризации в режиме реального времени. Диаризация различает различных докладчиков, участвующих в беседе. Служба "Речь" предоставляет сведения о том, какой докладчик говорил определенную часть транскрибированного речи.
Сведения о динамике включаются в результат в поле идентификатора говорящего. Идентификатор говорящего — это универсальный идентификатор, назначенный каждому участнику беседы службой во время распознавания, так как различные динамики определяются из предоставленного звукового содержимого.
Совет
Вы можете попробовать речь в режиме реального времени на текст в Speech Studio без регистрации или написания кода. Тем не менее, Speech Studio пока не поддерживает диаризацию.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Создайте ресурс службы "Речь" в портал Azure.
- Ключ ресурса службы "Речь" и регион. После развертывания ресурса службы "Речь" выберите Перейти к ресурсу для просмотра ключей и управления ими. Дополнительные сведения о ресурсах служб ИИ Azure см. в разделе "Получение ключей" для ресурса.
Настройка среды
Чтобы настроить среду, установите пакет SDK службы "Речь" для JavaScript. Если вам только нужно имя пакета для установки, выполните команду npm install microsoft-cognitiveservices-speech-sdk
. Подробные инструкции по установке см. в статье Руководство по установке пакета SDK.
Настройка переменных среды
Приложение должно пройти проверку подлинности для доступа к ресурсам служб ИИ Azure. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным,. Например, после получения ключа для ресурса "Речь" напишите его в новую переменную среды на локальном компьютере, на котором выполняется приложение.
Совет
Не включайте ключ непосредственно в код и никогда не публикуйте его. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье "Безопасность служб искусственного интеллекта Azure".
Чтобы задать переменную среды для ключа ресурса "Речь", откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
SPEECH_KEY
переменную среды, замените ключ одним из ключей ресурса. - Чтобы задать
SPEECH_REGION
переменную среды, замените регион одним из регионов для ресурса.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Примечание.
Если вам нужно получить доступ только к переменным среды в текущей консоли, можно задать переменную set
среды вместо setx
.
После добавления переменных среды может потребоваться перезапустить все программы, которые должны считывать переменную среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.
Реализация диаризации из файла с транскрибированием беседы
Выполните следующие действия, чтобы создать консольное приложение для транскрибирования бесед.
Откройте окно командной строки, в котором требуется новый проект, и создайте файл с именем
ConversationTranscription.js
.Установите пакет SDK службы "Речь" для JavaScript:
npm install microsoft-cognitiveservices-speech-sdk
Скопируйте в файл
ConversationTranscription.js
следующий код: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();
Получите пример звукового файла или используйте собственный
.wav
файл. Заменитеkatiesteve.wav
путь и имя файла.wav
.Приложение распознает речь нескольких участников беседы. Звуковой файл должен содержать несколько динамиков.
Чтобы изменить язык распознавания речи, замените
en-US
на другой поддерживаемый язык. Например,es-ES
для испанского (Испания). Если язык не указан, по умолчанию используетсяen-US
. Дополнительные сведения о том, как определить один из нескольких языков, на которых могут говорить, см. в разделе Определение языка.Запустите новое консольное приложение, чтобы начать распознавание речи из файла:
node.exe ConversationTranscription.js
Внимание
Убедитесь, что заданы SPEECH_KEY
переменные среды и SPEECH_REGION
среды. Если эти переменные не заданы, образец завершается ошибкой с сообщением об ошибке.
Транскрибированные беседы должны выводиться в виде текста:
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
Докладчики определяются как гостевой-1, гостевой-2 и т. д. в зависимости от количества докладчиков в беседе.
Очистка ресурсов
Для удаления созданного ресурса службы "Речь" можно использовать портал Azure или интерфейс командной строки (CLI) Azure.
Справочная документация | Пакет (скачивание) | Дополнительные примеры в GitHub
Пакет SDK службы "Речь" для Objective-C поддерживает транскрибирование бесед, но мы еще не включили здесь руководство. Выберите другой язык программирования, чтобы приступить к работе и ознакомиться с основными понятиями, или обратитесь к справочнику и примерам для языка Objective-C, ссылки на которые приведены в начале этой статьи.
Справочная документация | Пакет (скачивание) | Дополнительные примеры в GitHub
Пакет SDK службы "Речь" для Swift поддерживает транскрибирование бесед, но мы еще не включили здесь руководство. Выберите другой язык программирования, чтобы приступить к работе и ознакомиться с основными понятиями, или обратитесь к справочнику и примерам для языка Swift, ссылки на которые приведены в начале этой статьи.
Справочная документация | Пакет (PyPi) | Дополнительные примеры в GitHub
В этом кратком руководстве вы запустите приложение для преобразования речи в текст с диаризации в режиме реального времени. Диаризация различает различных докладчиков, участвующих в беседе. Служба "Речь" предоставляет сведения о том, какой докладчик говорил определенную часть транскрибированного речи.
Сведения о динамике включаются в результат в поле идентификатора говорящего. Идентификатор говорящего — это универсальный идентификатор, назначенный каждому участнику беседы службой во время распознавания, так как различные динамики определяются из предоставленного звукового содержимого.
Совет
Вы можете попробовать речь в режиме реального времени на текст в Speech Studio без регистрации или написания кода. Тем не менее, Speech Studio пока не поддерживает диаризацию.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Создайте ресурс службы "Речь" в портал Azure.
- Ключ ресурса службы "Речь" и регион. После развертывания ресурса службы "Речь" выберите Перейти к ресурсу для просмотра ключей и управления ими. Дополнительные сведения о ресурсах служб ИИ Azure см. в разделе "Получение ключей" для ресурса.
Настройка среды
Пакет SDK для Python доступен в виде модуля индекса пакетов Python (PyPI). Пакет SDK для службы "Речь" (Python) совместим с Windows, Linux и macOS.
- Для платформы необходимо установить microsoft Распространяемый компонент Visual C++ для Visual Studio 2015, 2017, 2019 и 2022. При первой установке этого пакета может потребоваться перезагрузка.
- В Linux необходимо использовать целевую архитектуру x64.
Установите версию Python с версии 3.7 или более поздней версии. Сначала ознакомьтесь со статьей Руководство по установке пакета SDK, чтобы узнать о дополнительных требованиях.
Настройка переменных среды
Приложение должно пройти проверку подлинности для доступа к ресурсам служб ИИ Azure. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным,. Например, после получения ключа для ресурса "Речь" напишите его в новую переменную среды на локальном компьютере, на котором выполняется приложение.
Совет
Не включайте ключ непосредственно в код и никогда не публикуйте его. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье "Безопасность служб искусственного интеллекта Azure".
Чтобы задать переменную среды для ключа ресурса "Речь", откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
SPEECH_KEY
переменную среды, замените ключ одним из ключей ресурса. - Чтобы задать
SPEECH_REGION
переменную среды, замените регион одним из регионов для ресурса.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region
Примечание.
Если вам нужно получить доступ только к переменным среды в текущей консоли, можно задать переменную set
среды вместо setx
.
После добавления переменных среды может потребоваться перезапустить все программы, которые должны считывать переменную среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.
Реализация диаризации из файла с транскрибированием беседы
Чтобы создать новое консольное приложение, выполните указанные ниже действия.
Откройте окно командной строки, в котором требуется новый проект, и создайте файл с именем
conversation_transcription.py
.Выполните следующую команду для установки пакета SDK для службы "Речь".
pip install azure-cognitiveservices-speech
Скопируйте в файл
conversation_transcription.py
следующий код: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))
Получите пример звукового файла или используйте собственный
.wav
файл. Заменитеkatiesteve.wav
путь и имя файла.wav
.Приложение распознает речь нескольких участников беседы. Звуковой файл должен содержать несколько динамиков.
Чтобы изменить язык распознавания речи, замените
en-US
на другой поддерживаемый язык. Например,es-ES
для испанского (Испания). Если язык не указан, по умолчанию используетсяen-US
. Дополнительные сведения о том, как определить один из нескольких языков, на которых могут говорить, см. в разделе Определение языка.Запустите новое консольное приложение, чтобы начать транскрибирование бесед:
python conversation_transcription.py
Внимание
Убедитесь, что заданы SPEECH_KEY
переменные среды и SPEECH_REGION
среды. Если эти переменные не заданы, образец завершается ошибкой с сообщением об ошибке.
Транскрибированные беседы должны выводиться в виде текста:
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)
Докладчики определяются как гостевой-1, гостевой-2 и т. д. в зависимости от количества докладчиков в беседе.
Очистка ресурсов
Для удаления созданного ресурса службы "Речь" можно использовать портал Azure или интерфейс командной строки (CLI) Azure.
Преобразование речи в текстовый REST API ссылки на | речь на текстовый REST API для краткой ссылки на звуковые ссылки | на Дополнительные примеры на GitHub
REST API не поддерживает транскрибирование бесед. Выберите другой язык программирования или средство в верхней части этой страницы.
Интерфейс командной строки службы "Речь" не поддерживает транскрибирование бесед. Выберите другой язык программирования или средство в верхней части этой страницы.