stm32は、音声認識とブロードキャストを使用して、LEDライトをインテリジェントに制御します

stm32は、音声認識とブロードキャストを使用して、LEDライトをインテリジェントに制御します


前回、音声認識に関する記事を書きましたが、そのモジュールは通信にシリアルポートを使用しています。今回は別の識別・放送モジュールについてお話したいと思いますが、前回に比べて機能が多く、もちろん値段も高いです。識別モジュールとブロードキャストモジュールの両方がIICによって送信されるため、今回は、stm32f103c8t6制御ボード上の2つのIICはPB6、PB7とPB10、PB11です。この記事の主な機能は次のとおりです。 認識モジュールが話された指示に従って対応する単語を認識した後、対応するアクションを実行し、ブロードキャストモジュールを使用して対応するアクションが完了したかどうかを言います。ここでは、LEDライトを制御するだけです。もちろん、家電製品など、他のものも制御できます。
音声認識モジュールには、サイクリックモードの3つのモードがあります。モジュールは常に音声認識状態です。パスワードモード:パスワードが検出されたときに音声認識が実行されます。ボタンモード:ボタンが押されたときに音声認識モードになります。 、モジュールにはオンボードボタンがありません。メインコントロールボードを介してキー検出プログラムを設定します。キーを検出した後、I2Cを介してキーモード開始コマンドを送信します。キーモードは任意のキーで定義できます。
音声テンプレートモジュールは、中国語と英語のテキストの合成をサポートし、GB2312、GBK、BIG5、UNICODEの4つのエンコード方法を使用できます。コンポジションあたりのテキスト量は最大4Kバイトです。モジュールはテキストを分析し、チップは、組み込みのテキスト照合ルールに従って、一般的な数字、数字、時刻、日付、重み、メジャー記号などの形式でテキストを正しく識別して処理できます。一般的なポリフォニック単語の場合、文脈に応じて正しい場合もあります。読み方から判断すると、中国語と英語の両方を含むテキストの場合、中国語と英語の混合読みを実現できます。テキストの合成、合成の停止、合成の一時停止、合成の再開、ステータスクエリなど、さまざまな制御コマンドをサポートします。文字の発音や単語の発音など、対応する文字の放送モードを設定できます。また、設定することで羽生拼音を介して中国語を放送することもできます。複数のスピーカーを内蔵しており、設定により対応するスピーカーを選択して音声再生できます。音声放送の発話速度、イントネーション、音量を設定できます。モジュールには、数字記号などの他の特別なブロードキャスト設定もあります。

次に、2つのモジュールの写真とリンクをそれぞれ示します。
音声認識モジュール(基本的にLD3320)
リンク:音声認識モジュール音声放送モジュール 上記の2つのモジュールの配線も、次のように比較的簡単です。音声認識モジュール-------------音声合成ブロードキャストモジュールIIC1 -------------- --- ------- IIC2 VCC-> MCU 5V -------- VCC-> MCU 5V SCL-> MCU PB6 ------ SCL-> MCU PB10 SDA-> MCU PB7 --- --- SDA-> MCU PB11 GND- > MCU GND ---- GND->MCUGNDエフェクトビデオは以下に添付されています。
ここに画像の説明を挿入


ここに画像の説明を挿入








stm32音声認識およびブロードキャストインテリジェント制御LEDライト

次に、メインプログラムを添付します。

#include "stm32f10x.h"
#include "bsp_i2c.h"
#include "bsp_usart1.h"
#include  "led.h"
/*
语音识别模块			语音合成播报模块
IIC1				IIC2
VCC->单片机5V		VCC->单片机5V	
SCL->单片机PB6		SCL->单片机PB10
SDA->单片机PB7		SDA->单片机PB11
GND->单片机GND		GND->单片机GND
*/

int main(void)
{
    
    
	u8 result = 0xff;
	LED_Init();		  	//初始化与LED连接的硬件接口
	//I2C初始化
	I2C_Bus_Init();
	NVIC_Configuration();
	USARTx_Config();
	
#if 1
	I2C_ByteWrite(ASR_CLEAR_ADDR,0x40);//清除掉电保存区,录入前需要清除掉电保存区
	LD3320_delay(150000);//flash擦除时间较长,需要较长的延时
	I2C_ByteWrite(ASR_MODE_ADDR,0x01);//设置检测模式;
	AsrAddWords(0,"xiao ya"); 	
	AsrAddWords(4,"kai deng");   
    AsrAddWords(5,"guan deng");

#endif
	I2C_ByteWrite(ASR_REC_GAIN,0x45);  //识别的灵敏
	RGB_Set(255,255,255);
	LD3320_delay(10000);//flash擦除时间较长,需要较长的延时
	RGB_Set(0,0,0);
	
	SetVolume(10);		
	SetReader(Reader_XiaoYan);
	while(1)
	{
    
    	
		I2C_BufferRead(ASR_RESULT,&result,1);
		printf("result = %d\n",result);
		if(result==0)
		{
    
    
		speech_text("[x1]sound204",GB2312);
	while(GetChipStatus() != ChipStatus_Idle)
	{
    
    
	  delay(50);
	}
		}
		if(result==4)
		{
    
    
		GPIO_ResetBits(GPIOA,GPIO_Pin_1);		  //给PA1置0
		speech_text("灯已经打开",GB2312);
	while(GetChipStatus() != ChipStatus_Idle)
	{
    
    
	  delay(50);
	}
		}
		if(result==5)
		{
    
    
		GPIO_SetBits(GPIOA,GPIO_Pin_1);		  //给PA1置1
		speech_text("灯已经关闭",GB2312);
	while(GetChipStatus() != ChipStatus_Idle)
	{
    
    
	  delay(50);
	}
		}		
		LD3320_delay(10000);	
	}
				
}

/*********************************************END OF FILE**********************/

より詳細な情報が必要な場合は、記事の最後で確認できます。
関連する手順と情報を以下に添付します
。stm32音声認識とブロードキャストインテリジェント制御LEDライト関連の手順と情報
個人的には、上記の情報は非常に詳細であると考えてください。
コードの下にメッセージメールをお送りしますので、できるだけ早くお送りします。ご不明な点がございましたら、以下にコメントしてください。

おすすめ

転載: blog.csdn.net/weixin_44069765/article/details/113835168