1. 程式人生 > >語音識別完成詩句的查詢功能,iOS AVSpeechSynthesis語音輸出結果的詩歌APP

語音識別完成詩句的查詢功能,iOS AVSpeechSynthesis語音輸出結果的詩歌APP

water 兩個 min 介紹 ech fin com esp log

前言

當前的APP的查詢都是使用手動輸入,不僅效率低,而且查詢的語句的限制比較大,不能夠方便的擴展。 如果能方便的擴展查詢語句,那麽APP的使用就會有很大的靈活性。可以設計各種問句和語句,可以方便的和用戶進行交互。在這裏使用了olami平臺提供的語音平臺接口,很方便的實現了查詢語句的擴展,而且可以返回需要的結果。同時,Olami平臺也提供了完整的語音識別功能,再結合iOS 提供的AVSpeechSynthesis接口,就可以實現一套類似Siri的智能語音查詢詩句的APP

APP功能介紹

這是一個查詢《唐詩三百首》、《宋詞三百首》、《元曲三百首》的詩歌學習APP,可以查詢名字查詢詩歌,可以通過詩人查詢詩歌,可以通過詩詞查詢是哪一首,可以查詢唐代有哪些詩人,這些詩人的代表作是什麽。並通過語音讀出來
通過詩人查詢代表作,點擊可以顯示詩歌
技術分享

通過詩歌名稱查詢
技術分享

通過詩句查詢詩歌
技術分享

通過詩句查詢詩人
技術分享

功能的實現

語音識別和語義理解都是通過Olami平臺來實現的。這個需要去Olami平臺進行註冊,然後就可以免費試用了。官網的地址https://olami.ai,網站上有豐富的教學資源具體的使用可以查看相關的文檔,也可以查詢我的前幾篇博客
定義的語句大部分都是查詢的:例如
落花時節又逢君出自哪首詩
你會背李白的詩嗎
元代的詩人有哪些
唐朝有哪些詩人
唐朝詩人李白的主要作品有哪些

李商隱的詩

語音的讀取是使用了蘋果的AVSpeechSynthesis庫進行的。這個庫的使用也很簡單。這個庫是在AVFoundation中

#import<AVFoundation/AVFoundation.h>

使用了兩個類

AVSpeechSynthesizer
AVSpeechUtterance
AVSpeechSynthesizer *av= [[AVSpeechSynthesizer alloc]init];
av.delegate=self;//掛上代理
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"你好!"];//需要轉換的文字
 utterance.rate=0.5;// 設置語速,範圍0-1,註意0最慢,1最快;AVSpeechUtteranceMinimumSpeechRate最慢,AVSpeechUtteranceMaximumSpeechRate最快

 AVSpeechSynthesisVoice*voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-TW"];//設置發音,這是中文普通話

 utterance.voice= voice;

[av speakUtterance:utterance];//開始

AVSpeechSynthesizer定義了一些回調代理,可以偵測一些狀態

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didStartSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---開始播放");

}

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---完成播放");

}

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---播放中止");

}

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didContinueSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---恢復播放");

}

- (void)speechSynthesizer:(AVSpeechSynthesizer*)synthesizer didCancelSpeechUtterance:(AVSpeechUtterance*)utterance{

    NSLog(@"---播放取消");

}

語音識別完成詩句的查詢功能,iOS AVSpeechSynthesis語音輸出結果的詩歌APP