Ce dépôt contient un exemple de la façon d'implémenter la prise en charge des chiffons dans les applications qui utilisent la voix comme interface utilisateur, alimentée par l'API GPT-4O en temps réel pour l'audio. Nous décrivons le modèle plus en détail dans ce billet de blog, et vous pouvez voir cet exemple d'application en action dans cette courte vidéo.
Le RTClient dans le frontend reçoit l'entrée audio, envoie cela au backend Python qui utilise un objet RTMiddleTier pour interfacer avec l'API Azure OpenAI en temps réel et comprend un outil pour la recherche de recherche Azure AI.

Ce référentiel comprend une infrastructure en tant que code et un Dockerfile pour déployer l'application sur les applications de conteneurs Azure, mais elle peut également être exécutée localement tant que les services Azure AI et les services Azure Openai sont configurés.
Vous avez quelques options pour commencer ce modèle. Le moyen le plus rapide de commencer est GitHub Codespaces, car il configurera tous les outils pour vous, mais vous pouvez également le configurer localement. Vous pouvez également utiliser un conteneur de développement VS Code
Vous pouvez exécuter ce repo pratiquement en utilisant des codes GitHub, qui ouvriront un code VS basé sur le Web dans votre navigateur:
Une fois que l'espace de codes ouvrira (cela peut prendre plusieurs minutes), ouvrez un nouveau terminal et procédez pour déployer l'application.
Vous pouvez exécuter le projet dans votre conteneur de développement local VS Code à l'aide de l'extension des conteneurs Dev:
Démarrer Docker Desktop (l'installez-le s'il n'est pas déjà installé)
Ouvrez le projet:
Dans la fenêtre VS Code qui s'ouvre, une fois que les fichiers du projet s'affichent (cela peut prendre plusieurs minutes), ouvrez un nouveau terminal et déployez l'application.
Installez les outils requis:
python --version à partir de la console. Sur Ubuntu, vous devrez peut-être exécuter sudo apt install python-is-python3 pour lier python à python3 . Clone the Repo ( git clone https://github.com/Azure-Samples/aisearch-openai-rag-audio )
Passez à la section suivante pour déployer l'application.
Les étapes ci-dessous provisionnent Azure Resources et déploieront le code d'application sur Azure Container Apps.
Connectez-vous à votre compte Azure:
azd auth loginPour les utilisateurs de GitHub Codespaces, si la commande précédente échoue, essayez:
azd auth login --use-device-codeCréez un nouvel environnement AZD:
azd env new Entrez un nom qui sera utilisé pour le groupe de ressources. Cela créera un nouveau dossier dans le dossier .azure et le définira comme l'environnement actif pour tous les appels à azd à l'avenir.
(Facultatif) C'est le point où vous pouvez personnaliser le déploiement en définissant les variables d'environnement AZD, afin d'utiliser les services existants ou de personnaliser le choix vocal.
Exécutez cette commande unique pour provisionner les ressources, déployer le code et configurer la vectorisation intégrée pour l'exemple de données:
azd upazd down ou supprimer les ressources manuellement pour éviter les dépenses inutiles.Une fois que l'application a été déployée avec succès, vous verrez une URL imprimée à la console. Accédez à cette URL pour interagir avec l'application dans votre navigateur. Pour essayer l'application, cliquez sur "Démarrer le bouton Conversation", dites "Bonjour", puis posez une question sur vos données comme "Quelle est la politique de dénonciateur pour Contoso Electronics?" Vous pouvez également exécuter l'application localement en suivant les instructions dans la section suivante.
Vous pouvez exécuter cette application localement en utilisant soit les services Azure que vous avez fournis en suivant les instructions de déploiement, ou en pointant l'application locale aux services déjà existants.
Si vous avez déployé avec azd up , vous devriez voir un fichier app/backend/.env avec les variables d'environnement nécessaires.
Si vous n'utilisez pas azd up , vous devrez créer un fichier app/backend/.env avec les variables d'environnement suivantes:
AZURE_OPENAI_ENDPOINT=wss:// < your instance name > .openai.azure.com
AZURE_OPENAI_REALTIME_DEPLOYMENT=gpt-4o-realtime-preview
AZURE_OPENAI_REALTIME_VOICE_CHOICE= < choose one: echo, alloy, shimmer >
AZURE_OPENAI_API_KEY= < your api key >
AZURE_SEARCH_ENDPOINT=https:// < your service name > .search.windows.net
AZURE_SEARCH_INDEX= < your index name >
AZURE_SEARCH_API_KEY= < your api key >Pour utiliser l'ID ENTRA (votre utilisateur lors de l'exécution locale, l'identité gérée lors du déploiement) ne définissez tout simplement pas les clés.
Exécutez cette commande pour démarrer l'application:
Windows:
pwsh .scriptsstart.ps1Linux / Mac:
./scripts/start.shL'application est disponible sur http: // localhost: 8765.
Une fois l'application en cours d'exécution, lorsque vous naviguez vers l'URL ci-dessus, vous devriez voir l'écran de démarrage de l'application: 
Pour essayer l'application, cliquez sur "Démarrer le bouton Conversation", dites "Bonjour", puis posez une question sur vos données comme "Quelle est la politique de dénonciateur pour Contoso Electronics?"
Le prix varie par région et par utilisation, il n'est donc pas possible de prédire les coûts exacts de votre utilisation. Cependant, vous pouvez essayer la calculatrice de tarification Azure pour les ressources ci-dessous.
Pour réduire les coûts, vous pouvez passer aux SKU gratuits pour divers services, mais ces SKU ont des limitations.
azd down .
Ce modèle utilise l'identité gérée pour éliminer la nécessité pour les développeurs de gérer ces informations d'identification. Les applications peuvent utiliser des identités gérées pour obtenir des jetons Microsoft Entra sans avoir à gérer les informations d'identification.
Exemples de données: les documents PDF utilisés dans cette démo contiennent des informations générées à l'aide d'un modèle de langue (service Azure OpenAI). Les informations contenues dans ces documents sont uniquement à des fins de démonstration et ne reflètent pas les opinions ou les croyances de Microsoft. Microsoft ne fait aucune représentation ou garantie d'aucune sorte, expresse ou implicite, sur l'exhaustivité, l'exactitude, la fiabilité, la pertinence ou la disponibilité en ce qui concerne les informations contenues dans ce document. Tous droits réservés à Microsoft.