Kurzanleitung: API abfragen

Vorbereitung

  1. Führen Sie alle erforderlichen Schritte in der Kurzanleitung aus.
  2. Stellen Sie die API bereit.

Übersicht

Sie können die API unabhängig von der verwendeten Installationsmethode abfragen. Wie Sie die API abfragen, hängt davon ab, ob Sie einen öffentlichen Endpunkt konfiguriert haben. Wenn der Endpunkt nicht öffentlich ist, müssen Sie festlegen, wie die API bereitgestellt werden soll. Dafür gibt es viele Möglichkeiten. Beispielsweise können Sie eine Ingress-Ressource erstellen, wenn Ihr Cluster dies unterstützt, den erstellten Dienst veröffentlichen und den folgenden Befehl ausführen: Istio usw.

Die folgenden Schritte führen Sie durch die Abfrage eines Endpunkts. Dazu gibt es zwei Methoden:

  1. Fragen Sie den Endpunkt innerhalb des Clusters ab (keine öffentliche IP-Adresse erforderlich).
  2. Öffentliche IP-Adresse abfragen

Internen DNS-Namen abfragen (keine öffentliche IP-Adresse erforderlich)

In diesem Beispiel wird eine Abfrage innerhalb des Clusters mit dem dem Dienst zugewiesenen DNS-Namen (DNS) ausgeführt: $NAME.$NAMESPACE, z. B. speech.speech. Sie können entweder die Umgebungsvariablen festlegen oder sie durch einen tatsächlichen Wert in den Befehlen ersetzen.

  1. Erstellen Sie einen neuen Job innerhalb des Clusters, um die API abzufragen. Wenn dieser Job bereits im Cluster vorhanden ist, sollten Sie ihn zuerst entfernen.

    kubectl delete jobs.batch -n $NAMESPACE query-api
    
    echo "apiVersion: batch/v1
    kind: Job
    metadata:
      name: query-api
      namespace: $NAMESPACE
    spec:
      template:
        metadata:
          annotations:
            sidecar.istio.io/inject: 'false'
          labels:
            app: query
        spec:
          containers:
          - name: entrypoint
            image: gcr.io/cloud-marketplace/speech-onprem/speech-to-text-on-prem:$VERSION
            command: ["/bin/sh", "-c"]
            args:
            - curl https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/speech/snippets/resources/commercial_mono.wav --output /tmp/audio.wav;
              /bin/onprem_client --address=$NAME.$NAMESPACE:443 --file_paths /tmp/audio.wav
          restartPolicy: Never
    " | kubectl apply -f -
    
  2. Prüfen Sie die Logs, um das Transkript anzusehen:

    kubectl logs -n $NAMESPACE --follow $(kubectl get po -n $NAMESPACE -l
    app=query -o=jsonpath='{.items[0].metadata.name}') -c entrypoint
    

Öffentliche IP-Adresse abfragen

Wenn Sie Istio in Ihrem Cluster installiert haben, prüfen Sie, ob das Istio Ingress Gateway mit einer öffentlichen IP ausgeführt wird. Wenn Sie Istio nicht installiert haben, können Sie den Wert für $PUBLIC_IP festlegen. Danach können Sie Transkriptionsanfragen an einen öffentlichen Endpunkt senden.

  1. Wenn Sie Istio installiert haben, folgen Sie der Anleitung, um die öffentliche IP-Adresse des Ingress zu erhalten und auf PUBLIC_IP festzulegen.

  2. Wenn Istio noch nicht installiert ist, prüfen Sie, ob die IP-Adresse gebunden wurde. Es sollte unter EXTERNAL-IP angezeigt werden. Wenn es nach einigen Minuten noch nicht angezeigt wird, rufen Sie zur Fehlerbehebung den Cluster in der Console auf.

    kubectl get service $NAME --namespace $NAMESPACE
    
    1. Kopieren Sie die Binärdatei onprem_client aus dem Docker-Image:

      kubectl cp -n $NAMESPACE $(kubectl get pod -n $NAMESPACE -l
      app.kubernetes.io/name=$NAME -o=jsonpath='{.items[0].metadata.name}'
      ):/bin/onprem_client ./onprem_client
      
      kubectl cp -n $NAMESPACE $(kubectl get pod -n $NAMESPACE -l
      app.kubernetes.io/name=$NAME -o=jsonpath='{.items[0].metadata.name}'
      ):/usr/grte.tar ./grte.tar
      
      sudo tar -xvf grte.tar -C /
      
      chmod a+x ./onprem_client
      
    2. Verwenden Sie die Binärdatei onprem_client, um eine Abfrage zu senden:

      ./onprem_client --address ${PUBLIC_IP}:443
      --file_paths /path/to/audio.wav
      

Nächste Schritte

Informationen zum Senden einer Transkriptionsanfrage an die Speech-to-Text-On-Prem API