TwilioとPythonによる音声認識
16248 ワード
あなたの声の呼び出しを転写する能力を想像してください.我々がTheilioをDeepgramと結合することによってこの記事でそれをする方法を学ぶので、それ以上、見てください.
twilioでは、私たちは受信電話を受信し、着信コールを記録し、深いグラムの音声認識APIを使用してトランスクリプトを取得することができます.この例ではディープグラムPython SDKを使用します.
ここでは、電話をして、テキストにDeepgram声を使った後に、我々がブラウザーで見るもののスナップショットです.
始める前に、プロジェクトで使用するDeepgram APIキーを生成することが不可欠です.我々は、我々に行くことができますDeepgram console . あなたが再びそれを取得することができなくなり、新しいものを作成する必要がありますので、それをコピーし、安全な場所に保管してください.このチュートリアルでは、Python 3.10を使用しますが、Deepgramは以前のPythonのバージョンをサポートしています.
必ず行きなさいTwilio そして、アカウントのサインアップ.我々は、音声機能で電話番号を購入する必要があります.
我々はまた、発信電話をかけるために2台の電話を必要とします、そして、もう一つは呼び出しを受けます.
我々のプロジェクトでは、我々のアプリケーションのwebhookとして機能する一時的なURLを提供するngrokを使用します.Ngrokは、ローカルに実行されているアプリケーションへの要求を転送します.ダウンロードできますhere .
次に、どこでも好きなディレクトリを作りましょう.
重要ノート
Pythonでは仮想環境を使用するように勧められていますので、システムをインストールするのではなくコンテナ内にインストールすることができます.
依存関係をインストールするので、仮想環境がアクティブになることを確認してください.我々の仮想環境が命名されるならば
今すぐ楽しい部分に!スクリプトを開く
次に、行くことによって、ブラウザのウィンドウをプル
同時に、我々のアプリケーションを実行している新しいターミナルウィンドウとタイプを開きます :
'音声'セクションにスクロールして、Webhook、録音エンドポイントと私たちのngrok URLを追加し、保存します.このように
私たちは
私たちのアプリケーションを実行し、電話を受けるためにこれらを必要とするように両方の端末を実行しておきます.
環境変数を保存しましょう
コードを置き換えましょう
私たちは
次に、我々
Pythonファイルで、次のコードを追加します.このコードは、データベースからテキストへのリンクを取得し、HTMLテンプレートでレンダリングします.
最後に、電話をして、あなたの非twilio電話を使って、あなたが環境変数で提供される電話番号で電話会話を始めるようにしましょう
トゥイリオとDeepgramでテキストパイソンプロジェクトへのスピーチを構築することにおめでとう!何か質問があれば、Twitterで私たちに手を伸ばす自由にしてください.
twilioでは、私たちは受信電話を受信し、着信コールを記録し、深いグラムの音声認識APIを使用してトランスクリプトを取得することができます.この例ではディープグラムPython SDKを使用します.
ここでは、電話をして、テキストにDeepgram声を使った後に、我々がブラウザーで見るもののスナップショットです.
始める
始める前に、プロジェクトで使用するDeepgram APIキーを生成することが不可欠です.我々は、我々に行くことができますDeepgram console . あなたが再びそれを取得することができなくなり、新しいものを作成する必要がありますので、それをコピーし、安全な場所に保管してください.このチュートリアルでは、Python 3.10を使用しますが、Deepgramは以前のPythonのバージョンをサポートしています.
必ず行きなさいTwilio そして、アカウントのサインアップ.我々は、音声機能で電話番号を購入する必要があります.
我々はまた、発信電話をかけるために2台の電話を必要とします、そして、もう一つは呼び出しを受けます.
我々のプロジェクトでは、我々のアプリケーションのwebhookとして機能する一時的なURLを提供するngrokを使用します.Ngrokは、ローカルに実行されているアプリケーションへの要求を転送します.ダウンロードできますhere .
次に、どこでも好きなディレクトリを作りましょう.
mkdir deepgram-twilio
それから、私たちがそれにものを加えることを始めることができるように、そのディレクトリに変えてください.cd deepgram-twilio
また、プロジェクトとその依存関係を保持するための仮想環境を設定する必要があります.私たちはそれらについてもっと読むことができますhere つの方法を作成します.重要ノート
Pythonでは仮想環境を使用するように勧められていますので、システムをインストールするのではなくコンテナ内にインストールすることができます.
依存関係をインストールするので、仮想環境がアクティブになることを確認してください.我々の仮想環境が命名されるならば
venv
, その後、アクティブにします.source venv/bin/activate
プロジェクトを実行することで依存関係をインストールしましょうpip
仮想環境内の端末からインストールします. pip install deepgram-sdk
pip install twilio
pip install python-dotenv
pip install Flask
pip install 'flask[async]'
pip install pysondb
今私たちのお気に入りのエディタを開くことができますと呼ばれるファイルを作成するdeepgram-twilio-call.py
. コマンドラインから作成したい場合は、次のようにします.touch deepgram-twilio-call.py
暗号
今すぐ楽しい部分に!スクリプトを開く
deepgram-twilio-call.py
次のコードを追加して、フラスコアプリケーションがエラーなしで実行されるようにします.from flask import Flask
app = Flask(__name__)
@app.get("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
端末にこれを入力してフラスコアプリケーションを実行しますpython deepgram-twilio-call.py
.次に、行くことによって、ブラウザのウィンドウをプル
http://127.0.0.1:5000/
そして、我々はテキストを見るべきですHello World
.同時に、我々のアプリケーションを実行している新しいターミナルウィンドウとタイプを開きます :
ngrok http 127.0.0.1:5000
NGRKのURLをコピーして、電話番号に移動することによってtwilioに追加します.'音声'セクションにスクロールして、Webhook、録音エンドポイントと私たちのngrok URLを追加し、保存します.このように
https://6d71-104-6-9-133.ngrok.io/recordings
私たちは
/recordings
いくつかのエンドポイント.私たちのアプリケーションを実行し、電話を受けるためにこれらを必要とするように両方の端末を実行しておきます.
環境変数を保存しましょう
.env
以下のファイルを指定します.DEEPGRAM_API_KEY=[‘YOUR_API_KEY’]
RECEIVER_NUMBER=[‘PHONE_NUMBER_TO_RECEIVE_CALL’]
我々は置き換えることができますYOUR_API_KEY
APIキーで、我々はDeepgramコンソールでサインアップすることから受け取りました、そしてPHONE_NUMBER_TO_RECEIVE_CALL
電話番号は電話番号です.コードを置き換えましょう
deepgram-twilio-call.py
次のようにします.import asyncio
import json
import os
from flask import Flask, request, render_template
from deepgram import Deepgram
from twilio.twiml.voice_response import Dial, VoiceResponse
from twilio.rest import Client
from pysondb import db
from dotenv import load_dotenv
app = Flask(__name__)
calls_db=db.getDb('calls')
load_dotenv()
@app.post("/inbound")
def inbound_call():
response = VoiceResponse()
dial = Dial(
record='record-from-answer-dual',
recording_status_callback='https://6d71-104-6-9-133.ngrok.io/recordings'
)
dial.number(os.getenv("RECEIVER_NUMBER"))
response.append(dial)
return str(response)
ここでは、ライブラリをインポートし、フラスコアプリケーションの新しいインスタンスを作成します.次に、新しいデータベースを作成しますcalls
. 私たちは軽量JSONデータベースを使用しています.私たちは
/inbound
エンドポイントは、我々は音声通話を行うことができます.パラメータrecord='record-from-answer-dual'
私たちはデュアルコールまたは別の電話をかけることができる電話をするのに役立ちます.次に、我々
/recordings
下記のルートは、我々は我々の呼び出しの録音を取得し、音声を転写する音声認識を使用してテキスト機能にディープグラムのスピーチにタップします.もしresults
を返します.utterances
. 次に、utterances
にcalls
データベース.@app.route("/recordings", methods=['GET', 'POST'])
async def get_recordings():
deepgram = Deepgram(os.getenv("DEEPGRAM_API_KEY"))
recording_url = request.form['RecordingUrl']
source = {'url': recording_url}
transcript_data = await deepgram.transcription.prerecorded(source, {'punctuate': True,
'utterances': True,
'model': 'phonecall',
'multichannel': True
})
if 'results' in transcript_data:
utterances = [
{
'channel': utterance['channel'],
'transcript': utterance['transcript']
} for utterance in transcript_data['results']['utterances']
]
calls_db.addMany(utterances)
return json.dumps(utterances, indent=4)
どのように発言がフォーマットされたかを見ることができます.[{'channel': 0, 'transcript': 'Hello?', 'id': 288397603074461838},
{'channel': 1, 'transcript': 'Hello?', 'id': 109089630999017748},
{'channel': 0, 'transcript': "Hey. How's it going? It's good to hear from you.", 'id': 124620676610936565},
{'channel': 0, 'transcript': 'Thanks. You too.', 'id': 182036969834868158},
{'channel': 1, 'transcript': 'Thanks. You too.', 'id': 817052835121297399}]
最後に、追加しましょう/transcribe
ルートとテンプレートフォルダindex.html
テキストトランスクリプトに私たちの携帯電話の音声が表示されますファイル.Pythonファイルで、次のコードを追加します.このコードは、データベースからテキストへのリンクを取得し、HTMLテンプレートでレンダリングします.
@app.route("/transcribe", methods=['GET', 'POST'])
def transcribe_call():
context = calls_db.getAll()
return render_template("index.html", context=context )
if __name__ == "__main__":
app.run(debug=True)
プロジェクトディレクトリにフォルダを作成するtemplates
を追加し、index.html
ファイル.そのファイルで次のHTMLとJUMPコードを追加します.<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
{% for c in context %}
{{ c.transcript }} <br/>
{% endfor %}
</body>
</html>
ここでは、すべての転写物をループし、画面上に表示されます.最後に、電話をして、あなたの非twilio電話を使って、あなたが環境変数で提供される電話番号で電話会話を始めるようにしましょう
RECEIVER_NUMBER
. 我々は、呼び出しを受けて、会話に従事することができなければなりません.ハングアップした後、我々のブラウザに転写が表示されます.トゥイリオとDeepgramでテキストパイソンプロジェクトへのスピーチを構築することにおめでとう!何か質問があれば、Twitterで私たちに手を伸ばす自由にしてください.
Reference
この問題について(TwilioとPythonによる音声認識), 我々は、より多くの情報をここで見つけました https://dev.to/deepgram/speech-recognition-with-twilio-and-python-17ccテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol