教えてください – プログラミング – Home

通知
すべてクリア

教えてください

固定ページ 1 / 4

スヌーピー
 スヌーピー
(@スヌーピー)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

はじめまして!
今VisualC++ Ver6.0を使ってプログラムを作っていますが、わからないことがあり行き
詰っています。教えてください。
今、あるテキストファイルから音声ファイルを作成するプログラムを作っています。
どのような手順でプログラムを進行していけばよろしいでしょうか??
音声を作成するにはどのような構文で書いたらいいのか教えて!!


引用解決済
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

どこかの音声再生エンジンを利用させてもらうのが早くありませんか

質問の内容からすると全くプログラミングどころか、仕様すら決まっていない感じですけど


返信引用
ん
 ん
(@ん)
ゲスト
結合: 24年前
投稿: 81
 

回答ではありません。
質問内容の具体化を進めるという意味で。

> 今、あるテキストファイルから音声ファイルを作成するプログラムを作っています。
テキストファイルには何が記述されていますか?
作成しようとしている音声ファイルはどのような形式を考えていますか?

あと、タイトルが「教えてください」だと回答数は激減すると思われます。


返信引用
Joan
 Joan
(@Joan)
ゲスト
結合: 23年前
投稿: 42
 

>今、あるテキストファイルから音声ファイルを作成するプログラムを作っています。

僕のコンピュータに Windows 2000 + Office XP がインストールされています。
コントロールパネルの中に「スピーチ」という音声合成のプロパティがあるのですが
ocxっぽいので調べてみてらどうでしょうか?棒読みですが、意外と聞こえるます。
プレビューできるのでやってみてください。なんか SAPI というのがあるみたいですが。
http://www.google.co.jp/search?sourceid=navclient&hl=ja&q=SAPI

正直、自前で音声合成は無理っぽい感じがしますが。音声認識でもあの音とおの音が明確に
分かってないので、声のサンプルの方にも限界があるかと。サンプルがあっても、
アクセントやイントネーションも難しいですしね・・・。
それとも音声とは楽器の方でしょうか?こっちは MIDI で実現しているので現実的です。

>どのような手順でプログラムを進行していけばよろしいでしょうか??
>音声を作成するにはどのような構文で書いたらいいのか教えて!!

音声出力(音声合成)は、まだまだ研究段階の域ですので音声出力のやり方を教えられる
人なんて専門の教授・研究者じゃないと無理かと・・・。
パッケージソフトでエンジンを別に購入するがベストかと。


返信引用
a
 a
(@a)
ゲスト
結合: 23年前
投稿: 59
 

音声合成にもいくつかありまして、
1.自前で音を作成する
  これは実際にフォルマンとだとか、基本周波数等を考え、 
  音を作成します。

2.DBなどを参照する。
  「あ」を発音したいなら、あらかじめ用意されてるDBから
  「あ」の音声を引っ張ってくる。

1.はしんどいですが、2は簡単ですよ。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

aさんの2番の場合について
この方法は20年以上前にやったことありますよ(当時 高校1年)
当時の新聞あればそこにソースコード乗ってますけど
かなり変人扱いされましたけど...
アセンブラで(CPU:80286)

そこで技術的助言でしかないのですが
1.正弦波などの関連語句を勉強しましょう
2.オシロスコープを利用しましょう(水平・垂直 両用のもの)
3.音源ボード 制御についてはアセンブラレベルで利用可能になれば
  かなり精度のいい音声エンジン作成できるよ
4.録音する声は、男性の声で行いましょう
  2.で確認すると意味わかりますよ
5.昔のはなしですけどデジタル化するとアナログデータの50%を消失します
  実際に聞こえるには支障ありませんけど

6.声色の変更は、音声送出速度の変更で可能になります
7.イントネーションについては「基本文体」を用意することで可能になるはずです
8.基本録音データとしてアナログ音1文字につき2KBもあれば十分のはず
今思い出せるのはここまでくらいです

でも今なら、音声エンジン結構いろんなところから出ているから
最初に書いたように、それを利用するほうがかなり楽だと思います


返信引用
スヌーピー
 スヌーピー
(@スヌーピー)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

テキストファイルにある情報は生の情報です。生っていっても一応数値のみのテキスト
で考えています。その情報をWAVEに変換するプログラムを考えています。


返信引用
a
 a
(@a)
ゲスト
結合: 23年前
投稿: 59
 

>テキストファイルにある情報は生の情報です。生っていっても一応数値のみのテキスト
>で考えています。その情報をWAVEに変換するプログラムを考えています。
その数値が何を表しているかわからないのですが、
音声をサンプリングした値でしょうか?
それならwaveファイルの構造をしらべてみましょう。
そうすればwaveファイルに変換できるはずです。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

音声(人の声)と音階(ピアノ演奏など)どちらの表現を必要としているのでしょうか?
単純な方法とすればマイク録音により必要な分だけのwaveを作成して
対応するものを作成してはどうですか


返信引用
Joan
 Joan
(@Joan)
ゲスト
結合: 23年前
投稿: 42
 

> テキストファイルにある情報は生の情報です。
> 生っていっても一応数値のみのテキストで考えています。
ふー、やっと理解できました。
テキストファイルというと、文章ファイルの事を示すので数値データなら
テキスト化された数値データとか書いてくれるとわかりやすいです。

> その情報をWAVEに変換するプログラムを考えています。

「WAVEFORMATEX 構造体」で検索をすれば高確率で WAVE ファイル
フォーマット情報を調べれると思います。

手順は
1.テキストファイルから数値データを読み出す
2.WAVE ファイルに書き出す

です。???というか、WAVEファイルヘッダーを先頭に付けて
数値データをバイナリに変換すればいいだけじゃないかと
思うのですが??

ただ、「数値データ」といわれても、モノラルかステレオの
どっちで保存されたものでしょうか?また、数値化されたデータ
の精度はどんなものでしょうか?
とか、いろいろ謎めいてきます。

まぁ WAVEファイルを勉強してくれればその辺は理解できるかと
思います。


返信引用
スヌーピー
 スヌーピー
(@スヌーピー)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

テキストファイルには数値情報が入っています。例えば25555464という情報が入ってい
るものとして考えています。このような情報が沢山入っている一つのデータだとして考
えています。その情報にはモノラル、ステレオ、8ビット、16ビット、サンプリング
レート等の情報はないものです。それを、WAVEに変換使用と考えています。数値だけの
情報です。ファイルサイズとかはどのようにしたらわかるのでしょうか。プロパティと
かでファイルサイズを見た所5Mとしたら、それがそのままWAVEのファイルサイズになる
のでしょうか??


返信引用
a
 a
(@a)
ゲスト
結合: 23年前
投稿: 59
 

>テキストファイルには数値情報が入っています。例えば25555464という情報が入ってい
>るものとして考えています。このような情報が沢山入っている一つのデータだとして考
>えています。その情報にはモノラル、ステレオ、8ビット、16ビット、サンプリング
>レート等の情報はないものです。それを、WAVEに変換使用と考えています。数値だけの
>情報です。ファイルサイズとかはどのようにしたらわかるのでしょうか。プロパティと
>かでファイルサイズを見た所5Mとしたら、それがそのままWAVEのファイルサイズになる
>のでしょうか??

1.ファイルサイズ取得
CFile::GetLengthとか。。。

2. >それがそのままWAVEのファイルサイズになるのでしょうか??

まずはwaveファイルの構造を調べてください


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

質問
WAVE系を処理している サンプルプログラムは見たことありますか?
MSDNに結構載ってますけど参考にしたことありますか


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 24年前
投稿: 217
 

google で「WAV ファイルフォーマット」などで検索すると、
解説しているページが結構見つかりますよ。

あと、↓のページは各種ファイルフォーマットに関する情報が豊富です。
http://www.wotsit.org/

さらに、こんなものがあるようです。
http://www.vector.co.jp/soft/win95/art/se057421.html


返信引用
Joan
 Joan
(@Joan)
ゲスト
結合: 23年前
投稿: 42
 

>その情報にはモノラル、ステレオ、8ビット、16ビット、
> サンプリングレート等の情報はないものです。
そのファイルにそれらの情報が含まれている必要はないですが、WAVEファイル
を書き出す時に サンプリング周波数、量子化ビット数、チャンネル数が
最低決まっていないとファイルを再生することができません。
少なくてもこの3つは先に与えられていないと、変換できません。

>テキストファイルには数値情報が入っています。
>例えば25555464という情報が入っているものとして考えています。
>このような情報が沢山入っている一つのデータだとして考えています。
うーん、25555464 っていう値をとっちゃいますか?だとするとかなり困難です。
普通は量子化数は符号整数16bit 要するに signed short が1つのサンプルに
なります。値が取れる範囲は、だいたい±32,000の範囲になります。
なので、この範囲に収めなくてはいけません。一番大きい値をとるサンプルを
探して 16bit に収まるような倍率を求めて、その倍率で全部のサンプルを
小さくしなくてはいけませんし・・・。

> プロパティとかでファイルサイズを見た所5Mとしたら、それがそのままWAVEの
> ファイルサイズになるのでしょうか??
テキストとバイナリって知ってますか?それぞれの特徴を知っていればこんな
ことは聞かないかと思いますが・・・。


返信引用
固定ページ 1 / 4

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました