「ゼロベース- あなた自身のロボットを構築する」
まず、家に帰ったとき、家にいる人は1人だけですが、誰もチャットしていないと想像してください。コマンドを送信すると、コンピュータが自動的に会話を開始します。画面を入力したり見たりする必要はありません。あなた自身の声を作り、あなたの質問に答え、そして挨拶してください。
01-プログラミングのアイデアは非常に重要です
良いアイデアを持って、それをコードで実装します。それをどのように実装するかがより重要です。
まず、この記事を読んでいない場合に自動応答ロボットを実装する方法を考えてから、私の解決策を見てください。私の解決策は最善の解決策ではないからです。
アイデア:
1.最初に頭に浮かぶのはマクロです。話したいのですが、すぐにマシンに応答させ、スピーカーから応答させます。これが私たちのニーズです。
2.私たちは彼をいくつかの小さな要求に分割しました。
(1)話したい場合は音が出て、システムが音を翻訳できないので、作った音を録音する必要があります。
(2)音声をテキストに変換します。
(3)訓練したロボットにテキストを送信しますが、自分で訓練するのは難しいです。現時点では、パブリックバックグラウンドのXiaolingロボットと同じように、サードパーティのインターフェイスを使用して自動的に返信します。
3.次に、特定のプロセスが出てきます。
サウンド---->オーディオファイル----->サードパーティのインターフェイスを呼び出す(音声認識)------->テキスト------->チューリングロボットに送信------ ->ロボットが応答します------->テキストを返します------->テキストから音声へ---->出力して音を出します。
いきなりめまいがする、調整方法。
02-音声はオーディオファイルを生成します
音声ファイルを生成するには、それを録音してファイルに保存する必要があります。pythonで録音を開始してファイルを保存するにはどうすればよいですか?
考えてみてください!
ここでモジュールをインポートする必要があります。言われているように、そこにはガイドがありません!ねえ、パイソンはとても強いです。
モジュールをインポートします。ここでは、pip installpyaudioをインストールする必要があります。
輸入波 pyaudio輸入PyAudioから、paInt16
興味のある人はそれについて学び、実装コードを見続けることができます
def save_wave_file(filename、data):#オーディオファイルを保存 wf = wave.open(filename、 'wb') wf.setnchannels(1) wf.setsampwidth(2) wf.setframerate(8000) wf.writeframes(b ""。 join(data)) wf.close() def my_record():#Realize Recording pa = PyAudio() stream = pa.open(format = paInt16、channels = 1、 rate = 8000、input = True、 frames_per_buffer = 2000) my_buf = [] count = 0 print( "Recording") while count <2 * 15: #録音時間を制御します。15秒audio = stream.read(2000) my_buf.append(audio) count + = 1 #print( '。' ) save_wave_file('01 .wav '、my_buf)#オーディオファイルの保存関数 stream.close()を呼び出します print( "録音が完了しました!")
音声生成オーディオファイルが実行されます
03-オーディオファイルからテキストへ
上記のオーディオファイルはすでに取得していますが、オーディオファイルをテキストに変換するにはどうすればよいですか?
私たちは続けます:
ここでは、サードパーティの音声認識インターフェイスを使用できます。ここでは、Baiduのインターフェイスを使用しています。これは、比較的単純であるため、関連するapiを自分で調べることができます。
インポートモジュール:pip install baidu_aip
aipからインポートAipSpeech
必要なモジュール名をインポートし、オーディオファイルを送信して、テキストを返します。
ここでの3つのパラメーターは、取得するすべての人に任されています。
def audio_word(): APP_ID = '' API_KEY = '' SECRET_KEY = '' client = AipSpeech(APP_ID、API_KEY、SECRET_KEY) def get_file_content(filePath): with open(filePath、 'rb')as fp: return fp.read( ) ret = client.asr(get_file_content('01 .wav ')、' wav '、16000、{' dev_pid ':1537、}) print(ret)#認識されたテキストを取得します
ここでは、あなたの能力をテストし、あなたがそれを自分で試すことができるようにするためのリンクを与えるために、例外処理をしませんでした。
これはBaiduのドキュメントであり、オープンプラットフォームです。使用する必要がある場合は、独自のアプリケーションのテストを申請できます。
関連ドキュメントhttp://ai.baidu.com/docs#/ASR-Online-Python-SDK/top
オープンプラットフォームhttps://console.bce.baidu.com/ai/#/ai/speech/app/detail~appId=608501
04-ロボットに話しかける
さて、ここにいます、私たちの声はうまく言葉に変換されます、そして?
今回はサードパーティのインターフェースを再度呼び出して、自動応答を行います。
ここで私はチューリングロボットと呼んでいます、あなたも知ることができます。
どういうわけか、ここではプラットフォームダイアログボックスのチャットボットを直接使用しています。
次のように(requestsモジュールをここにインポートする必要があります):
def tu_ling(text): url = "http://www.tuling123.com/robot-chat/robot/chat/227960/jwt7" data = {"perception":{"inputText":{"text":text} }、 "userInfo":{"userId": "demo123"}} header = { "Referer": "http://www.tuling123.com/member/robot/1140264/center/frame.jhtml?page=0&child= 0、 "User-Agent": "Mozilla / 5.0(Windows NT 10.0; WOW64)AppleWebKit / 537.36(KHTML、Geckoなど)Chrome / 55.0.2883.87 UBrowser / 6.2.4094.1 Safari / 537.36"} tuling = requests.post( url、json = data、headers = header) conent = tuling.json()
ここではクローラーを使用しています
05-テキストからスピーチ
さて、(黒板をノックして)要点は、私は前年に試験を受けなかったし、昨年も試験を受けなかった。
テキストを音声に変換し、出力デバイスを使用して出力する必要があります。どうすればよいですか。
実行する方法?別のモジュールをインポートしてください!
pip install Pywin32
インポートが成功した後、インストールしたところ、pywin32はpython2のコードのようで、python3をサポートするようにいくつかの場所を変更する必要があります。
次に、
import win32com.client Speaker = win32com.client.Dispatch( "SAPI.SpVoice") speaker.Speak( "私は音声アシスタントです、Xiaoling!")
さて、私たちの音声パートナーは完了です。
それを分解してください、それは非常に簡単に感じます!何を待っているのか、自分で作ってください!
関連する提案:
公式アカウントのバックグラウンドで「VoiceRobot」と返信して、完全なコードと関連するプラグインを入手してください。
フォローへようこそ!