.NET kullanarak video transkript incelemeleri oluşturma

Dikkat

Content Moderator gözden geçirme aracı artık kullanım dışıdır ve 12/31/2021 tarihinde kullanımdan kaldırılacaktır.

Bu makalede, C# ile Content Moderator SDK'sı ile çalışmaya başlamanıza yardımcı olacak bilgiler ve kod örnekleri ve sağlar:

  • İnsan denetleyiciler için video incelemesi oluşturma
  • Gözden geçirmeye denetlenen transkript ekleme
  • Gözden geçirmeyi yayımlama

Önkoşullar

  • Henüz oturum açmadıysanız Content Moderator gözden geçirme aracı sitesinde oturum açın veya hesap oluşturun.
  • Bu makalede, videonun denetlenmesi ve insan karar alma aracında video incelemesini oluşturduğunuz varsayıldı. Şimdi inceleme aracına denetlenen video transkriptleri eklemek istiyor siniz.

API anahtarınızı gözden geçirme API'sini çağırandan emin olmak (İş oluşturma)

Önceki adımları tamamladıktan sonra, başlangıcı Azure portaldan yaptıysanız şu anda iki Content Moderator anahtarınız olmalıdır.

SDK örneğinizde Azure tarafından sağlanan API anahtarını kullanmayı planlıyorsanız, uygulamanızın inceleme API’sini çağırmasına ve incelemeler oluşturmasına izin vermek için inceleme API'siyle Azure anahtarını kullanma bölümünde anlatılan adımları izleyin.

İnceleme aracı tarafından oluşturulan ücretsiz deneme anahtarını kullanırsanız, inceleme aracı hesabınız anahtarı zaten tanıyordur ve bu nedenle ek bir adım gerekli değildir.

Videolarınızı gözden geçirme için hazırlama

Transkripti bir video incelemesine ekleyin. Videonun çevrimiçi yayımlansı gerekir. Akış uç noktasına ihtiyacınız var. Akış uç noktası, inceleme aracı video oynatıcının videoyu oynatması için izin verir.

Video tanıtım küçük resmi

Visual Studio projenizi oluşturun

  1. Çözümünüze yeni bir Konsol uygulaması (.NET Framework) projesi ekleyin.

  2. Projeye VideoTranscriptReviews adını girin.

  3. Bu projeyi çözümün tekil başlangıç projesi olarak seçin.

Gerekli paketleri yükleme

TermLists NuGet için aşağıdaki paket paketlerini yükleyin.

  • Microsoft.Azure.CognitiveServices.ContentModerator
  • Microsoft.Rest.ClientRuntime
  • Microsoft.Rest.ClientRuntime.Azure
  • Newtonsoft.Json

Programı deyimler kullanarak güncelleştirme

Programın deyimlerini aşağıdaki gibi değiştirin.

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using Microsoft.Azure.CognitiveServices.ContentModerator;
using Microsoft.Azure.CognitiveServices.ContentModerator.Models;
using Newtonsoft.Json;

Özel özellikler ekleme

VideoTranscriptReviews, sınıf Programı ad alanına aşağıdaki özel özellikleri ekleyin. ve alanlarını AzureEndpoint CMSubscriptionKey uç nokta URL'nizin ve abonelik anahtarı değerlerinin değerleriyle güncelleştirin. Bunları kaynağınız için hızlı başlangıç sekmesindeki hızlı başlangıç sekmesinde Azure portal.

namespace VideoReviews
{
    class Program
    {
        // NOTE: Enter a valid endpoint URL
        /// <summary>
        /// The endpoint URL of your subscription
        /// </summary>
        private static readonly string AzureEndpoint = "YOUR ENDPOINT URL";

        // NOTE: Enter a valid subscription key.
        /// <summary>
        /// Your Content Moderator subscription key.
        /// </summary>
        private static readonly string CMSubscriptionKey = "YOUR CONTENT MODERATOR KEY";

        // NOTE: Replace this example team name with your Content Moderator team name.
        /// <summary>
        /// The name of the team to assign the job to.
        /// </summary>
        /// <remarks>This must be the team name you used to create your 
        /// Content Moderator account. You can retrieve your team name from
        /// the Content Moderator web site. Your team name is the Id associated 
        /// with your subscription.</remarks>
        private const string TeamName = "YOUR CONTENT MODERATOR TEAM ID";

        /// <summary>
        /// The minimum amount of time, in milliseconds, to wait between calls
        /// to the Content Moderator APIs.
        /// </summary>
        private const int throttleRate = 2000;

İstemci Content Moderator oluşturma

VideoTranscriptReviews, sınıf Programı ad alanına aşağıdaki yöntem tanımını ekleyin.

/// <summary>
/// Returns a new Content Moderator client for your subscription.
/// </summary>
/// <returns>The new client.</returns>
/// <remarks>The <see cref="ContentModeratorClient"/> is disposable.
/// When you have finished using the client,
/// you should dispose of it either directly or indirectly. </remarks>
public static ContentModeratorClient NewClient()
{
    return new ContentModeratorClient(new ApiKeyServiceClientCredentials(CMSubscriptionKey))
    {
        Endpoint = AzureEndpoint
    };
}

Video incelemesi oluşturma

ContentModeratorClient.Reviews.CreateVideoReviews ile bir video incelemesi oluşturun. Daha fazla bilgi için bkz. API başvurusu.

CreateVideoReviews aşağıdaki gerekli parametrelere sahip:

  1. MIME türü içeren ve "application/json" olması gereken bir dize.
  2. Ekip Content Moderator adı.
  3. Bir IList <CreateVideoReviewsBodyItem> nesnesi. Her CreateVideoReviewsBodyItem nesnesi bir video gözden geçirmesini temsil eder. Bu hızlı başlangıç aynı anda tek bir gözden geçirme oluşturur.

CreateVideoReviewsBodyItem'ın çeşitli özellikleri vardır. En azından aşağıdaki özellikleri ayarlayın:

  • İçerik . Gözden geçirilen videonun URL'si.
  • ContentId. Video incelemesine atanma kimliği.
  • Durum. Değeri "Yayımlanmamış" olarak ayarlayın. Ayarlanmazsa varsayılan olarak "Pending" (Beklemede) değeri kullanılır. Bu, video incelemesinin yayımlanır ve insan incelemesini beklemede olduğu anlamına gelir. Bir video gözden geçirmesi yayımlandıktan sonra video kareleri, transkript veya transkript moderyonu sonucu ekamazsınız.

Not

CreateVideoReviews bir IList <string> döndürür. Bu dizelerin her biri, bir video incelemesi için bir kimlik içerir. Bu kimlikler GUID'tir ve ContentId özelliğinin değeriyle aynı değildir.

Aşağıdaki yöntem tanımını VideoReviews, sınıf Programı ad alanına ekleyin.

/// <summary>
/// Create a video review. For more information, see the API reference:
/// https://westus2.dev.cognitive.microsoft.com/docs/services/580519463f9b070e5c591178/operations/580519483f9b0709fc47f9c4 
/// </summary>
/// <param name="client">The Content Moderator client.</param>
/// <param name="id">The ID to assign to the video review.</param>
/// <param name="content">The URL of the video to review.</param>
/// <returns>The ID of the video review.</returns>
private static string CreateReview(ContentModeratorClient client, string id, string content)
{
    Console.WriteLine("Creating a video review.");

    List<CreateVideoReviewsBodyItem> body = new List<CreateVideoReviewsBodyItem>() {
        new CreateVideoReviewsBodyItem
        {
            Content = content,
            ContentId = id,
            /* Note: to create a published review, set the Status to "Pending".
            However, you cannot add video frames or a transcript to a published review. */
            Status = "Unpublished",
        }
    };

    var result = client.Reviews.CreateVideoReviews("application/json", TeamName, body);

    Thread.Sleep(throttleRate);

    // We created only one review.
    return result[0];
}

Not

Content Moderator hizmet anahtarınızın saniyede istek sayısı (RPS) hız sınırı vardır. Sınırı aşarsanız, SDK 429 hata koduyla bir özel durum oluşturulur.

Ücretsiz katmanı anahtarı bir RPS’lik hız sınırına sahiptir.

Video incelemesine transkript ekleme

ContentModeratorClient.Reviews.AddVideoTranscript ile bir video incelemesine transkript eklersiniz. AddVideoTranscript aşağıdaki gerekli parametrelere sahip:

  1. Ekip Content Moderator kimliğiniz.
  2. CreateVideoReviews tarafından döndürülen video inceleme kimliği.
  3. Transkripti içeren bir Stream nesnesi.

Transkript WebVTT biçiminde olmalıdır. Daha fazla bilgi için bkz. WebVTT: Web Video Metin Parçaları Biçimi.

Not

Program VTT biçiminde bir örnek transkript kullanır. Gerçek bir çözümde, videodan transkript Azure Media Indexer için Azure Media Indexer hizmetini kullanırsiniz.

VideotranscriptReviews, sınıf Programı ad alanına aşağıdaki yöntem tanımını ekleyin.

/// <summary>
/// Add a transcript to the indicated video review.
/// The transcript must be in the WebVTT format.
/// For more information, see the API reference:
/// https://westus2.dev.cognitive.microsoft.com/docs/services/580519463f9b070e5c591178/operations/59e7b8b2e7151f0b10d451fe
/// </summary>
/// <param name="client">The Content Moderator client.</param>
/// <param name="review_id">The video review ID.</param>
/// <param name="transcript">The video transcript.</param>
static void AddTranscript(ContentModeratorClient client, string review_id, string transcript)
{
    Console.WriteLine("Adding a transcript to the review with ID {0}.", review_id);
    client.Reviews.AddVideoTranscript(TeamName, review_id, new MemoryStream(System.Text.Encoding.UTF8.GetBytes(transcript)));
    Thread.Sleep(throttleRate);
}

Video incelemesine transkript moderasyon sonucu ekleme

Video incelemesine transkript eklemenin yanı sıra, bu transkripti modersiyon sonucu da eklersiniz. Bunu ContentModeratorClient.Reviews.AddVideoTranscriptModerationResult ile yapacaktır. Daha fazla bilgi için bkz. API başvurusu.

AddVideoTranscriptModerationResult aşağıdaki gerekli parametrelere sahip:

  1. MIME türü içeren ve "application/json" olması gereken bir dize.
  2. Ekip Content Moderator adı.
  3. CreateVideoReviews tarafından döndürülen video inceleme kimliği.
  4. IList <TranscriptModerationBodyItem> . TranscriptModerationBodyItem aşağıdaki özelliklere sahiptir:
  5. Hükümler. IList <TranscriptModerationBodyItemTermsItem> . TranscriptModerationBodyItemTermsItem aşağıdaki özelliklere sahiptir:
  6. dizinini dizin. Terimin sıfır tabanlı dizini.
  7. terimi. terimini içeren bir dize.
  8. Zaman damgası. Transkriptte koşulların bulunduğu zamanı saniye olarak içeren bir dize.

Transkript WebVTT biçiminde olmalıdır. Daha fazla bilgi için bkz. WebVTT: Web Video Metin Parçaları Biçimi.

VideoTranscriptReviews, sınıf Programı ad alanına aşağıdaki yöntem tanımını ekleyin. Bu yöntem ContentModeratorClient.TextModeration.ScreenText yöntemine bir transkript gönderilir. Ayrıca, sonucu bir IList 'e çevirir <TranscriptModerationBodyItem> ve Addvideotranscriptmoderationresult' a gönderir.

/// <summary>
/// Add the results of moderating a video transcript to the indicated video review.
/// For more information, see the API reference:
/// https://westus2.dev.cognitive.microsoft.com/docs/services/580519463f9b070e5c591178/operations/59e7b93ce7151f0b10d451ff
/// </summary>
/// <param name="client">The Content Moderator client.</param>
/// <param name="review_id">The video review ID.</param>
/// <param name="transcript">The video transcript.</param>
static void AddTranscriptModerationResult(ContentModeratorClient client, string review_id, string transcript)
{
    Console.WriteLine("Adding a transcript moderation result to the review with ID {0}.", review_id);

    // Screen the transcript using the Text Moderation API. For more information, see:
    // https://westus2.dev.cognitive.microsoft.com/docs/services/57cf753a3f9b070c105bd2c1/operations/57cf753a3f9b070868a1f66f
    Screen screen = client.TextModeration.ScreenText("eng", "text/plain", transcript);

    // Map the term list returned by ScreenText into a term list we can pass to AddVideoTranscriptModerationResult.
    List<TranscriptModerationBodyItemTermsItem> terms = new List<TranscriptModerationBodyItemTermsItem>();
    if (null != screen.Terms)
    {
        foreach (var term in screen.Terms)
        {
            if (term.Index.HasValue)
            {
                terms.Add(new TranscriptModerationBodyItemTermsItem(term.Index.Value, term.Term));
            }
        }
    }

    List<TranscriptModerationBodyItem> body = new List<TranscriptModerationBodyItem>()
    {
        new TranscriptModerationBodyItem()
        {
            Timestamp = "0",
            Terms = terms
        }
    };

    client.Reviews.AddVideoTranscriptModerationResult("application/json", TeamName, review_id, body);

    Thread.Sleep(throttleRate);
}

Video incelemesi Yayımla

Contentmoderatorclient. İncelemeleri. PublishVideoReview ile bir video incelemesi yayımlarsınız. Publishvideoreview aşağıdaki gerekli parametrelere sahiptir:

  1. Content Moderator takım adınız.
  2. Createvideoincelemeleri tarafından döndürülen VIDEO İnceleme kimliği.

Aşağıdaki yöntem tanımını ad alanı Videoincelemeleri, sınıf programına ekleyin.

/// <summary>
/// Publish the indicated video review. For more information, see the reference API:
/// https://westus2.dev.cognitive.microsoft.com/docs/services/580519463f9b070e5c591178/operations/59e7bb29e7151f0b10d45201
/// </summary>
/// <param name="client">The Content Moderator client.</param>
/// <param name="review_id">The video review ID.</param>
private static void PublishReview(ContentModeratorClient client, string review_id)
{
    Console.WriteLine("Publishing the review with ID {0}.", review_id);
    client.Reviews.PublishVideoReview(TeamName, review_id);
    Thread.Sleep(throttleRate);
}

Hepsini bir araya getirme

Ana yöntem tanımını, VideoTranscriptReviews, Class program ad alanına ekleyin. Son olarak, program sınıfını ve VideoTranscriptReviews ad alanını kapatın.

Not

Program, VTT biçiminde bir örnek TRANSCRIPT kullanır. Gerçek dünyada bir çözümde, bir videodan döküm oluşturmak için Azure Media Indexer hizmetini kullanırsınız.

static void Main(string[] args)
{
    using (ContentModeratorClient client = NewClient())
    {
        // Create a review with the content pointing to a streaming endpoint (manifest)
        var streamingcontent = "https://amssamples.streaming.mediaservices.windows.net/91492735-c523-432b-ba01-faba6c2206a2/AzureMediaServicesPromo.ism/manifest";
        string review_id = CreateReview(client, "review1", streamingcontent);

        var transcript = @"WEBVTT

        01:01.000 --> 02:02.000
        First line with a negative word in a transcript.

        02:03.000 --> 02:25.000
        This is another line in the transcript.
        ";

        AddTranscript(client, review_id, transcript);

        AddTranscriptModerationResult(client, review_id, transcript);

        // Publish the review
        PublishReview(client, review_id);

        Console.WriteLine("Open your Content Moderator Dashboard and select Review > Video to see the review.");
        Console.WriteLine("Press any key to close the application.");
        Console.ReadKey();
    }
}

Programı çalıştırma ve çıktıyı gözden geçirme

Uygulamayı çalıştırdığınızda, aşağıdaki satırlarda bir çıktı görürsünüz:

Creating a video review.
Adding a transcript to the review with ID 201801v5b08eefa0d2d4d64a1942aec7f5cacc3.
Adding a transcript moderation result to the review with ID 201801v5b08eefa0d2d4d64a1942aec7f5cacc3.
Publishing the review with ID 201801v5b08eefa0d2d4d64a1942aec7f5cacc3.
Open your Content Moderator Dashboard and select Review > Video to see the review.
Press any key to close the application.

Video dökümünü gözden geçir ekranında Content moderator gözden geçirme aracındayken video dökümü inceleme sayfasına gidin > > .

Aşağıdaki özellikleri görürsünüz:

  • Eklediğiniz iki satır dökümü
  • Metin denetleme hizmeti tarafından bulunan ve vurgulanan küfür terimi
  • Bir döküm metni seçildiğinde bu zaman damgasından video başlatılır

İnsan moderatör için video dökümü incelemesi

Sonraki adımlar

.net için Content Moderator .net SDK ve diğer Content Moderator hızlı başlangıçlara yönelik Visual Studio çözümü alın.

İnceleme aracında video İncelemeleri oluşturmayı öğrenin.