音声合成のプログラムではお世話になりました。
今、音声認識のプログラムを作ろうと思って、以前紹介された、
プログラムをダウンロードして参考にしようと思ったのですが、
SpeechLib_TLB TSpSharedRecoContext ISpeechRecoGrammar
など多くの赤下線が出てコンパイル出来ません。
Win8、DelphiXE5で、話しかけたらそれがEditに表示できるように
するにはどうしたらいいのか、分かる人ガいたらよろしくお願いします。
回答ではないのですが・・・
Windows 10 だと、音声入力もできるのですね。
Windows10の音声入力をやってみたけどダメだった話
http://hokoxjouhou.blog105.fc2.com/blog-entry-1128.html
音声認識ソフトも色々ありそうです。
音声認識ソフトをあらかた調べたので『まとめ』。
http://blog.chiyopen.com/speech-all/
参考までに・・・
あと、
音声認識APIたたいてみた
http://www.nct-inc.jp/engineer_blog/2493/
なども・・・
> 以前紹介された、
> プログラムをダウンロードして参考にしようと思ったのですが、
> SpeechLib_TLB TSpSharedRecoContext ISpeechRecoGrammar
> など多くの赤下線が出てコンパイル出来ません。
紹介されたサイトなどあれば、そのサイトの情報を挙げれば、
より親切かも、しれませんね。
検索したら、
日本語音声認識サンプル
http://netakiri.net/labo/rcg_japanese_sample.shtml
がありますね。
igyさん、ありがとうございます。
以前紹介されたのはまさにこれのことです。
せっかくできるかと期待していましたが、
残念です。
明日から旅行に行くので、ここに来れませんが、
何かあればよろしくお願いします。
> 以前紹介されたのはまさにこれのことです。
どれのことです?
> せっかくできるかと期待していましたが、
> 残念です。
残念なのはASさんの態度のような気もしますが…他人とコミュニケーションをとる気があるんだかないんだか。
で、
> SpeechLib_TLB TSpSharedRecoContext ISpeechRecoGrammar
> など多くの赤下線が出てコンパイル出来ません。
参考にしたとおぼしきネタキリラボさんの説明には抜けがあって(いやどこかのページに書かれてるのかも)、
タイプライブラリ(TLB)の取り込みが必要で、これによってできたSpeechLib_TLB.pasをライブラリパスの
通ったところかプロジェクトのパスに置く必要があります(SpeechLib_TLBがコンパイルエラーになるのは
SpeechLib_TLB.pasが見つからないからです)。
メインメニューのコンポーネント→コンポーネントのインポートでタイプライブラリの取り込み、Microsoft
Speech Object Libraryを選択、で進んでいくとSpeechLib_TLB.pasができます。
まずは試してみてください。
通りすがりさん、ありがとうございます。
やっと帰ってきましたので、時間ができ次第やってみます。
何と言うか、皆さんすごいですね。
よく分かるもんだといつも感心しています。
通りすがりさん、やってみました。
赤下線はかなり消えましtが、TSpSharedRecoContextをはじめに、
6個の赤下線が残りました。
TSpSharedRecoContextは検索しましたが、残念ながら、買い手あることの
意味がさっぱり??
できれば、よろしくお願いします。
買い手→書いて
です。
SpeechLib_TLB.pas の中身見てみたけど
TSpSharedRecoContext = class(TOleServer)
ISpeechRecoGrammar = interface(IDispatch)
ってちゃんと定義されているからクラス名が未定義とかではないでしょ?
赤線って言われても何のエラーかわからないし
先に挙げた
日本語音声認識サンプル
http://netakiri.net/labo/rcg_japanese_sample.shtml
のコードをダウンロードして、Delphi 10.2.3 Starter で試したところ、
問題なく、コンパイル できました。(Windows 10)
もし、AS さんがコンパイルしようとしてるコードが、
そのサイトからダウンロードしたプロジェクトそのままでなく、
AS さんが独自に作成したプロジェクト であれば、
その問題のコードをここに挙げてみるのは、いかがですか?
takeさん、ありがとうございます。
[dcc32 エラー] Unit1.pas(23): E2003 未定義の識別子 : 'TSpSharedRecoContext'
と出ています。
igyさん、いいですね。
私もダウンロードして回答したものですよ。
XE5だからですかね??
delphi10って最近版ですよね??
知人が持っていますので、試してみようかな??
ちょっと質問ですが、delphi10StarterではプロダクトIDは取れなかった
気がしますが、できますか??
> ちょっと質問ですが、delphi10StarterではプロダクトIDは取れなかった
> 気がしますが、できますか??
Delphi - Starter Edition - Free Download
https://www.embarcadero.com/jp/products/delphi/starter/free-download
で、(AS さんは、XE5ユーザーということでEDNアカウントはお持ちだと思うので)
「ログイン」タブをクリックし、必要な情報を入力すれば、入手できそうな気がします。
igyさん、ありがとうございます。
以前、ダウンロードして私のプログラムをコンパイルしたら、
プロダクトIDが取れなくて、動かなかったことがあります。
私のやり方が悪いのかもと思って、質問してみました。
あ、
> ちょっと質問ですが、delphi10StarterではプロダクトIDは取れなかった
この文章、「Starter Editionのインストール番号 を入手できますか?」っていう質問と勘違いしてました。
前回質問の、
文字化けを防止するには??
https://www.petitmonte.com/bbs/answers?question_id=8852
の「プロダクトID」のことですよね。
> 私のやり方が悪いのかもと思って、質問してみました。
文字化けを防止するには??
https://www.petitmonte.com/bbs/answers?question_id=8852
にて、最終的に改善したコードであれば、特に問題なく、できると思いますよ。
igyさん、ありがとうございます。
私もダウンロードして使ってみました。
残念ながら、音声認識はやはり同じところで赤下線がでます、
プロダクトIDに関してはうまく作動します。
あとは、Win10でやってみます。
Win10でも同じ場所に未定義という表示が出ます。
delphi10は一度ダウンロードしているので、ダウンロードできなくて、
RXトライアル版をダウンロードしたのですが、
delphi10ではないからかもしれません。
知人のところで試してみます。
妻のメールアドレスを使って子供用のWin10にDelphi10.2をインストールして、
やってみました。
やはり、同じところに
[dcc32 エラー] Unit1.pas(23): E2003 未定義の識別子 : 'TSpSharedRecoContext'
と出ます。
どうもMicrosoft speech libraryの入れ方が間違っているのではと思います。
コンポーネント→コンポネントのインポート→タイプライブラリの取り込み
→Microsoft Speech Object Library→最後ユニットの作成
でいいのでしょうか?
よろしくお願いいたします。
Microsoft Speech Object Libraryも2つあるのですが??
>>Microsoft Speech Object Libraryも2つあるのですが??
上記の文章は、「Microsoft Speech Object Libraryも2つあるのですが、どちらを使用したほうがよろしいのでしょうか?」
という、意味ですか?
質問は、はっきりと明確に、かつシンプルに書いてください。
おそらく、sapi.dllとsapi_onecore.dllなんでしょうが、
タイプライブラリはどちらにて生成したのでしょうか?
ご自身でMicrosoft Speech Object Libraryが2つあると分かっているのであれば、
どちらを取り込んだか明記すべきです。
SAPIさん、ありがとうございます。
一応、両方とも入れてみたのですが、だめでした。
ちなみに、Microsoft Speech Object Library を取り込んだ後、
ツールパレットには、TSpVoice や TSpSharedRecoContext など、ありますか?
Delphiが悪い、ライブラリ作った人が悪い、(何も言ってないのに)理解してくれない回答者が悪いとか思われているみたいなので回答しづらいですが
まず音声認識の問題ではないですよねこれ?
外部クラスをに使われている
TSpSharedRecoContext = class(TOleServer)
ISpeechRecoGrammar = interface(IDispatch)
が定義さているのにコンパイルしたら
[dcc32 エラー] Unit1.pas(23): E2003 未定義の識別子 : 'TSpSharedRecoContext'
ってエラー出すのですよね?
じゃあ外部クラスがが usesに記述されていないとかそういうオチなんじゃないですかね?
他の人はサンプルをダウンロードたらコンパイルできたって言ってますが
そちらの環境ではどうなんですか?
サンプルで試したのですか?
まさかサンプル試さずに独自プログラム書いて動かないって騒いでいるだけなのですか?
>じゃあ外部クラスがが usesに記述されていないとかそういうオチなんじゃないですかね?
WindowsIDの件みたいだったら良いですね。
何れにせよ、質問者さん以外は、サンプルでコンパイルできているので、
質問者さんもサンプルでコンパイルできるか、試してはどうでしょうか?
>ALL
タイプライブラリの生成を2つしているみたいですが、
この状態で、uses SpeechLib_TLBはどちらを指すのでしょうか?
それとも、TLBが上書きされるのでしょうか?
takeさん、ありがとうございます。
もちろん、ダウンロードしたものをコンパイルしています。
私には独自に作るなどという力量はありませんよ。
igy,さんありがとうございます。
win8にダウンロードしてdelphi10.2で見てみました。
検索というのがあるので、そこに入れて検索しましたが、
×の表示が出ます。
igyさんのやった通りにしますので、手順を教えてください。
よろしくです。
sapiさん、ありがとうございました。
sapiさんもコンパイル出来ましたか??
> igyさんのやった通りにしますので、手順を教えてください。
正確には、覚えていないのですが、
Delphi Speech Application Program Interface (SAPI) Example
https://www.youtube.com/watch?v=KS-fz6Y2MwA
の最初のほうの手順どおり、「Microsoft Speech Object Library」を取り込み。
# 実際は、動画の最後まで(TSpVoice の動作確認まで)試しました。
日本語音声認識サンプル
http://netakiri.net/labo/rcg_japanese_sample.shtml
のコードをダウンロード・解凍して、コンパイル。
だったと思います。
タイプライブラリが2つあるのはバージョンの違いですかね?
uses SpeechLib_TLB で指されるのは同一ファイル名になるのなら上書きかなぁ
バージョン毎に異なるファイル名だったら検索PATHがどうなっているかによるかも
参照先が変わったのに内部のキャッシュに古いのが残っていて
本来とは異なるコンパイルエラーが出ているのだとしたら
Delphiの上のメニュープロジェクトから「全てのプロジェクトをビルド」を実行すると
エラー内容に変化があるかもしれませんね。
今回のエラーの原因は、takeさんがおっしゃっているように、
SAPIの参照が問題と私は考えています。
ですので、質問者さんは新規(ココ重要)にプロジェクトを作成し、
タイプライブラリの取り込みはsapi.dllにしてみてください。
igyさん、ありがとうございます。
動画は私には無理でした。
takeさん、ありがとうございます。
win8に登録したdelphi10では一つしかありませんでした。
ビルドしてみましたが、同じエラーが出ます。
takeさんもコンパイルできましたか?
sapiさん、ありがとうございます。
新規にという意味は今あるのを削除して、もう一度ダウンロードするという意味ですか?
タイムライブラリにはsapi.dllというのは見つかりませんが、
どこにあるか教えてくださいませ。
自分でも検索はしますが。
使わないものをあまりタイプライブラリに組み込みたくないので
SpeechLib_TLB.pas をダウンロードしてソースを見ているだけです。
サンプルのソースだと
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleServer, SpeechLib_TLB, StdCtrls, ActiveX;
ってなってるのでマウスカーソルを SpeechLib_TLB の上に持っていって
[Ctrl]キーを押しながらマウスクリック(ダブルクリックだったっけ?)で
参照先のクラスに飛べるかどうかですかね
飛べないなら SpeechLib_TLB を参照できていない
飛べる場合は正常なのでコンパイルできるはずです。
takeさん、ありがとうございます。
[Ctrl]キーを押しながらマウスクリックしてみました。
SpeechLib_TLB.pasが表示されたので、TSpSharedRecoContextを検索したら、
入っていませんでした。
もう、あきらめなくてはなりませんかね??
sapi.dllタイプ ライブラリから 生成された SpeechLib_TLB.pas をこちらでは見ています。
置き場所はここ
https://ja.osdn.net/projects/tweetvoice/scm/svn/blobs/head/trunk/Imports/SpeechLib_TLB.pas
使われている外部クラスは
uses Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants;
取り込んだときDelphiコンポーネントとして登録されるように
procedure Register;
begin
RegisterComponents(dtlServerPage, [TSpNotifyTranslator, TSpObjectTokenCategory, TSpObjectToken, TSpResourceManager,
TSpStreamFormatConverter, TSpMMAudioEnum, TSpMMAudioIn, TSpMMAudioOut, TSpStream,
TSpVoice, TSpSharedRecoContext, TSpInprocRecognizer, TSpSharedRecognizer, TSpLexicon,
TSpUnCompressedLexicon, TSpCompressedLexicon, TSpShortcut, TSpPhoneConverter, TSpPhoneticAlphabetConverter,
TSpNullPhoneConverter, TSpTextSelectionInformation, TSpPhraseInfoBuilder, TSpAudioFormat, TSpWaveFormatEx,
TSpInProcRecoContext, TSpCustomStream, TSpFileStream, TSpMemoryStream]);
end;
こんな風に定義されていますね。
この辺久しくやってないので失念していますが
SpeechLib_TLB.pas に本来あるはずのクラスが無いということは
取り込みまでの手順で間違っているのではないでしょうか?
>タイムライブラリにはsapi.dllというのは見つかりませんが、
本当ですか?
タイプライブラリをインポートする画面で、ファイル名の欄がありませんか?
質問者さんが行った、タイプライブラリの取り込みの手順を示してください。
手順が間違っているようです。
なお、私はコンパイルすることはできました。
参考.
http://mrxray.on.coocan.jp/Delphi/CompoInstall/TypeLibraryD2009.htm
takeさん、sapiさん、ありがとうございます。
やはり、登録の仕方が違っていますよね。
いま、紹介された方法でやっていきましたが、
最後の既存のパッケージに追加する際、どれを選んでいいのか、
分かりません。
dclfrx19.bpl
dclfrxdb19.bpl
dclfrxe19.bpl
の選択肢が出ます。
XE5でしています。
よろしくお願いします。
UTIMO DEKINAI
https://ja.osdn.net/projects/tweetvoice/scm/svn/blobs/head/trunk/Imports/SpeechLib_TLB.pas
HA
// $Rev: 17244 $
WIN10 / DELPHI 10.2 DE TORIKONDA RA
// $Rev: 52393 $
TSpSharedRecoContext
GA INAI
漢字かけるかな?
IP暗号化こっそり変えてるな
もう文字化けしないだろ
WIN10 で 取り込んで
// $Rev: 17244 $
の人いる?
コンポーネントラッパーの作成のチェックしてなかった
だけだ
ABCさん、ありがとうございました。
コンポーネントラッパーの作成のチェックしてなかっただけだ
この文で、やってみる気になりました。
コンパイルはできました。
感謝します。
dankeです。
いろいろ試してみましたが、表示される漢字は「右」と「左」だけです。
「最小」というと最小化されるし、「最大」と言うと「最大化」します。
Win10だけでなく、Win8でもコンパイル、起動できるようになっただけでも
進歩だとか思います。
speechgrammer.xmlに下記のように追加して、
This is a pen
を表示させることができましたが、
任意の言葉を表示させるためにはどうしたらいいのでしょうか??
一応、ネットを検索しましたが、英語ばかりで、さっぱりでした。
日本語で書いてあってもさっぱりとは思うんですが。
分かる人がいれば、よろしくお願いします。
<P VAL="4">/This/じす/ジス;</P>
<P VAL="5">/is/いず/イズ;</P>
<P VAL="10">/a/あ/ア;</P>
<P VAL="11">/pen/ぺん/ペン;</P>
質問者さんがサンプルとしている記事を、リンク先も含め、よく読んでみましたか?
http://netakiri.net/labo/rcg_japanese_sample.shtml
上記に、「グラマーファイルの作り方など詳しく解説されてます。」とリンク先が提示されています。
# あと、どうでもいいですけど、Thisは「ディス」じゃ?
# Google翻訳に英語書いて、発音させるといいですよ。
sapiさん、ありがとうございます。
グラマーファイルを自分で作る必要があるという意味でしょうか??
Wordの辞書を使う方法はないのでしょうか??
英語の発音に関しては、音声認識のプログラムを作りたい理由なんです。
英語の発音でその単語が表示できるかを目標に勉強しています。
さらに言うと、音声合成で発音させた長文を聞かせて、その長文が
できるかどうかを見たいするんです。
よろしくお願いします。
*ここも音声入力できるんですね??
試してみたら、何にでも音声入力できることが分かりました。
ただここは音声入力がすぐさま表示できます。
自分が作ったメモで文書を表示するプログラムは一々確認が出ます。
ここのようにすぐさま文章が共有できるようにするにはどうしたらいいのか
教えてください。
よろしくお願いします。
> 試してみたら、何にでも音声入力できることが分かりました。
最初のほう(3週間ぐらい前)に
> Windows 10 だと、音声入力もできるのですね。
>
> Windows10の音声入力をやってみたけどダメだった話
> http://hokoxjouhou.blog105.fc2.com/blog-entry-1128.html
と、書き込みましたが、読んでいただけなかったのかな?
もし、読んでいたら、もう少し早く気付いたかもしれませんね。
> 自分が作ったメモで文書を表示するプログラムは一々確認が出ます。
そのプログラムは、AS さんが書いたコードだと思いますので、
おそらく、“一々確認”でるように実装していると思いますが、
その部分は、この掲示板を見ている人は、確認しようがないので、
(前にも、同じようなことを書きましたが)
問題のコードをここに挙げてみるのは、いかがですか?
igyさん、ありがとうございます。
読んではいますが、全部は頭に残らないのですよ。
すみません。
確認が出るというのは、formにmemo1を張り付けただけで
話かけたときに出るものです。
ここの書き込みは話しかけたら文が直接入力されますよね。
> 確認が出るというのは、formにmemo1を張り付けただけで
> 話かけたときに出るものです。
Windows 10 の音声入力 で、試してみたところ、
(標準搭載の)メモ帳では、確認画面が出ませんが、
emEditor(テキストエディタ)では、確認画面がでますね。
# Windows 10 の音声認識の設定とかで、切り替えられたりできるのか、などは、よくわからないですね・・
igyさん、ありがとうございます。
RecognitionJSrcでもNew('SpeechGrammer.xml');を削除すると、
確認画面がでるので、Grammerファイルがないと出るということ
になりますよね。
結局、Wordやメモ帳に使われているGrammerファイルは何か?
ということですかね??