Python音声制御に基づくDJIの革新的なEPロボットと対話-次のステップは、Baidu AIを介して録音を認識して再生することです
前の記事の間違いについて教えてください
前の記事では、プログラミングの考え方に少し問題があります。これは、後ろにダイアログを追加してプログラミングの考え方を変更するのを忘れたためです。以下では、プログラミングの考え方について考えていることを
記録します。コンピュータは、Baidu AIによってテキストとして認識されます-テキスト情報をEPに送信-テキスト情報をチューリングロボットに送信-チューリングロボットから返された結果をMP3に変換——MP3を再生
前の記事のコードについて教えてください
プロセス:サンプリング-"ファイルの書き込み
import pyaudio #导入pyAudio的源代码文件,我们下面要用到,不用到就不用导入啦
import wave
def record(): #定义函数
CHUNK = 1024
FORMAT = pyaudio.paInt16 #量化位数
CHANNELS = 1 #采样管道数
RATE = 16000 #采样率
RECORD_SECONDS = 2
WAVE_OUTPUT_FILENAME = "output.wav" #文件保存的名称
p = pyaudio.PyAudio() #创建PyAudio的实例对象
stream = p.open(format=FORMAT, #调用PyAudio实例对象的open方法创建流Stream
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
frames = [] #存储所有读取到的数据
print('* recording >>>') #打印开始录音
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): #for循环,控制录音时间
data = stream.read(CHUNK) #根据需求,调用Stream的write或者read方法
frames.append(data)
print('* stop >>>') #打印结束录音
stream.close() #调用Stream的close方法,关闭流
p.terminate() #调用pyaudio.PyAudio.terminate() 关闭会话
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') #写入wav文件里面
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
record() #运行异常改函数
これはコードの一般的な説明です。コードの詳細を覚えておく必要はありません。コードの機能を覚えておけば、直接呼び出すだけです。
Baidu AIを通じて録音された音を認識する方法
Baidu Voiceは、Baidu Cloud AIのオープンプラットフォームが提供するサービスで、音声認識と音声合成をサポートしています。登録後は、REST APIに直接アクセスでき、一般ユーザーの無料の割り当てが5000回と思われます。
登録が成功したら、音声サービスのコンソールにアクセスして新しいアプリケーションを作成し、AppID、APIキー、および秘密キーを書き留めます。これらはコードに書き込む必要があります。
Baidu AIにサインアップ
し、ブラウザーでBaidu AI Fanfanプラットフォームを検索するアプリケーションを作成し、公式Webサイトにアクセスします。
登録
ログオン後は、AIの音声技術を見つけるために
アプリケーションを作成するために
作成し、そのAppIDを、APIキーと秘密鍵を書き留めて[完了]を
ので、私たちはアプリケーションの作成を完了していることを、そして、次はそれをプログラムする方法を、今回我々は、技術文書BaiduのAIプラットフォームを見ることができなければなりません
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_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()
# 识别本地文件
client.asr(get_file_content('audio.pcm'), 'pcm', 16000, {
'dev_pid': 1537,
result_text = result["result"][0]
print("you said: " + result_text)
return result_text
})
認識後、認識したテキストを音声に変換し、現時点ではバイドゥ音声(TTS)も使用していました。多くのソフトウェアには音声読み上げ機能がありますが、バイドゥ音声4番は女性向けの優れた音声です。 。
from aip import AipSpeech
APP_ID = 'Your AppID'
API_KEY = 'Your API Key'
SECRET_KEY = 'Your Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
def speak(text=""):
result = client.synthesis(text, 'zh', 1, {
'spd': 4,
'vol': 5,
'per': 4,
})
if not isinstance(result, dict):
with open('audio.mp3', 'wb') as f:
f.write(result)
speak("很高兴见到你")
テキストが音声に変換されたので、次はMP3を再生するために必要です。playsoundライブラリを使用したので、playsoundライブラリをインストールする必要があります。pipinstall playlistound、再生コードは次のとおりです。
def speak1():
playsound("audio.mp3")
speak1()
この時点で、Baidu AIを通じて記録および認識して再生するコードは終了します。完全なコード
import pyaudio #导入pyAudio的源代码文件,我们下面要用到,不用到就不用导入啦
import wave
from aip import AipSpeech
from playsound import playsound
APP_ID = '自己的APP_ID' #新建AiPSpeech
API_KEY = '自己的API_KEY'
SECRET_KEY = '自己的SECRET_KEY'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
def record(): #定义函数
CHUNK = 1024
FORMAT = pyaudio.paInt16 #量化位数
CHANNELS = 1 #采样管道数
RATE = 16000 #采样率
RECORD_SECONDS = 2
WAVE_OUTPUT_FILENAME = "output.wav" #文件保存的名称
p = pyaudio.PyAudio() #创建PyAudio的实例对象
stream = p.open(format=FORMAT, #调用PyAudio实例对象的open方法创建流Stream
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
frames = [] #存储所有读取到的数据
print('* 开始录音 >>>') #打印开始录音
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK) #根据需求,调用Stream的write或者read方法
frames.append(data)
print('* 结束录音 >>>') #打印结束录音
stream.close() #调用Stream的close方法,关闭流
p.terminate() #调用pyaudio.PyAudio.terminate() 关闭会话
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') #写入wav文件里面
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
def cognitive(): #读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
result = client.asr(get_file_content('output.wav'), 'wav', 16000, {
'dev_pid': 1537, #识别本地文件
})
result_text = result["result"][0]
print("you said: " + result_text)
return result_text
def speak(text=""):
result = client.synthesis(text, 'zh', 1, {
'spd': 4,
'vol': 5,
'per': 4,
})
if not isinstance(result, dict):
with open('audio.mp3', 'wb') as f:
f.write(result)
def speak1():
playsound("audio.mp3")
record() #录音模块
result = cognitive() #百度识别结果
speak(result) #将百度识别结果转化成语音
speak1() #朗读百度识别结果
よし。これでスクリーンショットの終わりです。試すことができます。
参考
playsoundライブラリ
BaiduのAI音声認識技術ドキュメント