はじめまして!
今VisualC++ Ver6.0を使ってプログラムを作っていますが、わからないことがあり行き
詰っています。教えてください。
今、あるテキストファイルから音声ファイルを作成するプログラムを作っています。
どのような手順でプログラムを進行していけばよろしいでしょうか??
音声を作成するにはどのような構文で書いたらいいのか教えて!!
どこかの音声再生エンジンを利用させてもらうのが早くありませんか
質問の内容からすると全くプログラミングどころか、仕様すら決まっていない感じですけど
回答ではありません。
質問内容の具体化を進めるという意味で。
> 今、あるテキストファイルから音声ファイルを作成するプログラムを作っています。
テキストファイルには何が記述されていますか?
作成しようとしている音声ファイルはどのような形式を考えていますか?
あと、タイトルが「教えてください」だと回答数は激減すると思われます。
>今、あるテキストファイルから音声ファイルを作成するプログラムを作っています。
僕のコンピュータに Windows 2000 + Office XP がインストールされています。
コントロールパネルの中に「スピーチ」という音声合成のプロパティがあるのですが
ocxっぽいので調べてみてらどうでしょうか?棒読みですが、意外と聞こえるます。
プレビューできるのでやってみてください。なんか SAPI というのがあるみたいですが。
http://www.google.co.jp/search?sourceid=navclient&hl=ja&q=SAPI
正直、自前で音声合成は無理っぽい感じがしますが。音声認識でもあの音とおの音が明確に
分かってないので、声のサンプルの方にも限界があるかと。サンプルがあっても、
アクセントやイントネーションも難しいですしね・・・。
それとも音声とは楽器の方でしょうか?こっちは MIDI で実現しているので現実的です。
>どのような手順でプログラムを進行していけばよろしいでしょうか??
>音声を作成するにはどのような構文で書いたらいいのか教えて!!
音声出力(音声合成)は、まだまだ研究段階の域ですので音声出力のやり方を教えられる
人なんて専門の教授・研究者じゃないと無理かと・・・。
パッケージソフトでエンジンを別に購入するがベストかと。
音声合成にもいくつかありまして、
1.自前で音を作成する
これは実際にフォルマンとだとか、基本周波数等を考え、
音を作成します。
2.DBなどを参照する。
「あ」を発音したいなら、あらかじめ用意されてるDBから
「あ」の音声を引っ張ってくる。
1.はしんどいですが、2は簡単ですよ。
aさんの2番の場合について
この方法は20年以上前にやったことありますよ(当時 高校1年)
当時の新聞あればそこにソースコード乗ってますけど
かなり変人扱いされましたけど...
アセンブラで(CPU:80286)
そこで技術的助言でしかないのですが
1.正弦波などの関連語句を勉強しましょう
2.オシロスコープを利用しましょう(水平・垂直 両用のもの)
3.音源ボード 制御についてはアセンブラレベルで利用可能になれば
かなり精度のいい音声エンジン作成できるよ
4.録音する声は、男性の声で行いましょう
2.で確認すると意味わかりますよ
5.昔のはなしですけどデジタル化するとアナログデータの50%を消失します
実際に聞こえるには支障ありませんけど
6.声色の変更は、音声送出速度の変更で可能になります
7.イントネーションについては「基本文体」を用意することで可能になるはずです
8.基本録音データとしてアナログ音1文字につき2KBもあれば十分のはず
今思い出せるのはここまでくらいです
でも今なら、音声エンジン結構いろんなところから出ているから
最初に書いたように、それを利用するほうがかなり楽だと思います
テキストファイルにある情報は生の情報です。生っていっても一応数値のみのテキスト
で考えています。その情報をWAVEに変換するプログラムを考えています。
>テキストファイルにある情報は生の情報です。生っていっても一応数値のみのテキスト
>で考えています。その情報をWAVEに変換するプログラムを考えています。
その数値が何を表しているかわからないのですが、
音声をサンプリングした値でしょうか?
それならwaveファイルの構造をしらべてみましょう。
そうすればwaveファイルに変換できるはずです。
音声(人の声)と音階(ピアノ演奏など)どちらの表現を必要としているのでしょうか?
単純な方法とすればマイク録音により必要な分だけのwaveを作成して
対応するものを作成してはどうですか
> テキストファイルにある情報は生の情報です。
> 生っていっても一応数値のみのテキストで考えています。
ふー、やっと理解できました。
テキストファイルというと、文章ファイルの事を示すので数値データなら
テキスト化された数値データとか書いてくれるとわかりやすいです。
> その情報をWAVEに変換するプログラムを考えています。
「WAVEFORMATEX 構造体」で検索をすれば高確率で WAVE ファイル
フォーマット情報を調べれると思います。
手順は
1.テキストファイルから数値データを読み出す
2.WAVE ファイルに書き出す
です。???というか、WAVEファイルヘッダーを先頭に付けて
数値データをバイナリに変換すればいいだけじゃないかと
思うのですが??
ただ、「数値データ」といわれても、モノラルかステレオの
どっちで保存されたものでしょうか?また、数値化されたデータ
の精度はどんなものでしょうか?
とか、いろいろ謎めいてきます。
まぁ WAVEファイルを勉強してくれればその辺は理解できるかと
思います。
テキストファイルには数値情報が入っています。例えば25555464という情報が入ってい
るものとして考えています。このような情報が沢山入っている一つのデータだとして考
えています。その情報にはモノラル、ステレオ、8ビット、16ビット、サンプリング
レート等の情報はないものです。それを、WAVEに変換使用と考えています。数値だけの
情報です。ファイルサイズとかはどのようにしたらわかるのでしょうか。プロパティと
かでファイルサイズを見た所5Mとしたら、それがそのままWAVEのファイルサイズになる
のでしょうか??
>テキストファイルには数値情報が入っています。例えば25555464という情報が入ってい
>るものとして考えています。このような情報が沢山入っている一つのデータだとして考
>えています。その情報にはモノラル、ステレオ、8ビット、16ビット、サンプリング
>レート等の情報はないものです。それを、WAVEに変換使用と考えています。数値だけの
>情報です。ファイルサイズとかはどのようにしたらわかるのでしょうか。プロパティと
>かでファイルサイズを見た所5Mとしたら、それがそのままWAVEのファイルサイズになる
>のでしょうか??
1.ファイルサイズ取得
CFile::GetLengthとか。。。
2. >それがそのままWAVEのファイルサイズになるのでしょうか??
まずはwaveファイルの構造を調べてください
質問
WAVE系を処理している サンプルプログラムは見たことありますか?
MSDNに結構載ってますけど参考にしたことありますか
google で「WAV ファイルフォーマット」などで検索すると、
解説しているページが結構見つかりますよ。
あと、↓のページは各種ファイルフォーマットに関する情報が豊富です。
http://www.wotsit.org/
さらに、こんなものがあるようです。
http://www.vector.co.jp/soft/win95/art/se057421.html
>その情報にはモノラル、ステレオ、8ビット、16ビット、
> サンプリングレート等の情報はないものです。
そのファイルにそれらの情報が含まれている必要はないですが、WAVEファイル
を書き出す時に サンプリング周波数、量子化ビット数、チャンネル数が
最低決まっていないとファイルを再生することができません。
少なくてもこの3つは先に与えられていないと、変換できません。
>テキストファイルには数値情報が入っています。
>例えば25555464という情報が入っているものとして考えています。
>このような情報が沢山入っている一つのデータだとして考えています。
うーん、25555464 っていう値をとっちゃいますか?だとするとかなり困難です。
普通は量子化数は符号整数16bit 要するに signed short が1つのサンプルに
なります。値が取れる範囲は、だいたい±32,000の範囲になります。
なので、この範囲に収めなくてはいけません。一番大きい値をとるサンプルを
探して 16bit に収まるような倍率を求めて、その倍率で全部のサンプルを
小さくしなくてはいけませんし・・・。
> プロパティとかでファイルサイズを見た所5Mとしたら、それがそのままWAVEの
> ファイルサイズになるのでしょうか??
テキストとバイナリって知ってますか?それぞれの特徴を知っていればこんな
ことは聞かないかと思いますが・・・。