(57)【要約】【課題】  オーディオデータの録音再生時の経過時間を取得する。【解決手段】  オーディオデータの録音及び再生可能な情報機器において、ＤＭＡＣによるデータ転送手段を有し、データ転送時にＤＭＡＣの転送カウント値を読むことによって、データの転送サイズを取得し、オーディオデータ録音再生時のサンプリング周波数から、録音及び再生時の経過時間を取得する。これにより情報機器のタイマを用いることなく、非常に小さい粒度でかつ、ほぼ実時間通りに再生経過時間を取得することができる。【選択図】  図１
2005182967.tif 000002
【特許請求の範囲】
【請求項１】
オーディオデータの録音再生ができる情報機器において、マイク及びスピーカ等、オーディオデータの入出力を行う手段と、
オーディオデータのＤＡ変換及びＡＤ変換、ボリュームの調節などを行うサウンドデバイス制御手段と、
ユーザの要求通りに、本情報機器を制御する手段と、
オーディオデータ再生時はＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）を用いて、ＲＡＭ上のデータをオーディオＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ（バッファ））へ転送し、オーディオデータ録音時はＤＭＡＣを用いて、オーディオＦＩＦＯのデータをＲＡＭへ転送するオーディオデータ転送手段と、
録音及び再生中に転送データサイズを取得し、録音及び再生中の経過時間を出力する手段とを有することを特徴とする情報機器。
【請求項２】
前記録音及び再生中の経過時間を出力する手段は、ＤＭＡＣのカウントレジスタ値またはオーディオＦＩＦＯのカウントレジスタ値を読むことにより、録音及び再生中の転送データサイズを取得し、録音及び再生中の経過時間を出力することを特徴とする請求項１記載の情報機器。
【請求項３】
前記録音及び再生中の経過時間を出力する手段は、ユーザが再生開始を指示した後、オーディオＦＩＦＯからサウンドデバイスにデータが出力されたときに、経過時間出力を開始することを特徴とする請求項１記載の情報機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報機器を用いたオーディオの再生時または録音時において、オーディオデータをＤＭＡ転送で行う場合の、再生または録音の経過時間の取得方法に関する。
【背景技術】
【０００２】
近年、コンピュータの性能向上に伴い、ＣＰＵの処理負荷が非常に大きくなった。そこで、ＣＰＵの負担を軽減し、データの転送速度を向上させるための技術にＤＭＡがある。オーディオデータの録音再生処理においても、ＤＭＡの使用は広く普及している。例えば、オーディオデータの再生時は、情報機器のハードディスク等の２次記憶装置に保存されたデータをＲＡＭへ読み込み、ＤＭＡを介して、ＲＡＭからサウンドデバイスへオーディオデータを転送し、ヘッドホンまたはスピーカなどへ音声出力する（例えば、特許文献１参照）。
【０００３】
また、特にオーディオデータの場合は、録音または再生時にデータを効率よく転送するため、先入れ先出しメモリであるＦＩＦＯメモリ（バッファメモリ）をＤＭＡとサウンドデバイス間で利用することが多い。
【０００４】
コンピュータ上でオーディオデータの録音再生処理を行う場合は、通常オーディオデータ処理を行うアプリケーション（オーディオプレイヤ）が起動し、ユーザはキーボードやマウス等を用いて、再生、停止等の操作を必要に応じてオーディオプレイヤに対して行う。オーディオプレイヤはユーザが再生開始を要求した場合、経過時間を表示装置に出力する。再生が続く限り、経過時間は更新される。この場合、従来のオーディオプレイヤでは、ＯＳが提供するＡＰＩ（アプリケーションプログラムインターフェース）を利用して、現在時刻を取得することができるので、再生開始とともに経過時間を計算し、ディスプレイ上に表示することができる。またオーディオプレイヤによっては、オーディオデータの経過を時間表示せず、スライドバー（プログレスバー）を用いて、ユーザに経過状況を通知するオーディオプレイヤもある。
【特許文献１】特開平５−１４３０７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のオーディオデータの録音または再生時の経過時間取得方法では、ＯＳが提供するＡＰＩを使用する。つまりは、ＣＰＵもしくはＲＴＣ（リアルタイムクロック）のクロック数から、時刻を換算している（タイマを使う）。しかし、オーディオデータの再生時においては、ＡＰＩより、時刻を取得し、再生開始とともに経過時間を表示しても、実際は音声が出力されるまでには、２次記憶装置からＲＡＭへのデータの読み出し、ＤＭＡ転送、サウンドデバイスでのＤＡ変換などの負荷があるため、再生と同時に音声が出力される訳ではなく、非常に短い時間であるが、タイムラグが発生する。また、経過時間を表示するために、ＡＰＩによってタイマを参照することが必須となる。さらに取得できるタイマの値は、ミリ秒単位程度が最小である場合が多い。
【０００６】
経過時間を表示しないオーディオプレイヤの場合は、ユーザは再生または録音を開始してからの、正確な経過時間を取得することはできず、スライドバーの移動量を目安に、録音または再生の進度を知ることになる。
【０００７】
本発明は上記の課題に鑑みて、ＤＭＡ転送を用いたオーディオデータの録音再生時において、タイマを使うことなく、非常に小さい粒度で、かつほぼ実時間通りに再生または録音の経過時間を取得することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は上記の課題を解決するため、以下の手段を有する。
・マイク及びスピーカ等、オーディオデータの入出力を行う、オーディオデータ入出力手段。
・オーディオデータのＤＡ変換及びＡＤ変換、ボリュームの調節などを行うサウンドデバイス制御手段。
・２次記憶装置からオーディオデータの読み込み、及びオーディオデータの２次記憶装置への書き込みなど、オーディオデータ処理を含め、コンピュータを制御する手段。
・ＤＭＡＣを用いてＲＡＭ上のデータをオーディオＦＩＦＯに転送する、またはオーディオＦＩＦＯのデータをＲＡＭ上へ転送するオーディオデータ転送手段。
・転送データサイズを取得し、オーディオデータの録音・再生における経過時間を出力する手段。
【発明の効果】
【０００９】
以上述べたように、本発明によれば、タイマを使うことなくオーディオデータの再生または録音時における経過時間を取得することができる。さらに、非常に小さい粒度でかつほぼ実時間通りに音声の録音再生経過時間を取得することができる。また、実際に音声が出力される時に、経過時間表示を開始することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を、図を用いて詳細に説明する。図１は本発明の情報機器の機能ブロック図である。本発明の情報機器を制御するＣＰＵ１０１を備え、ＣＰＵに接続されるシステムバス１１３を介して、システムが稼動するために必要なプログラムやアプリケーションプログラム及びオーディオデータが格納される２次記憶装置１０９を備えている。２次記憶装置はハードディスク、フラッシュメモリなど、２次記憶装置としての機能を満たせば、様々な記録媒体を使用できる。さらに、プログラム・データ等の実行・処理に必要な作業領域としてＲＡＭ１０２を備えている。１１１の入力デバイスによって、ユーザはオーディオプレイヤの起動や、本発明の情報機器に対して、指示入力を行う。入力デバイスとしては、キーボード、タッチパネルなどが挙げられる。文字や画像の表示デバイスとして、１１２のディスプレイを備え、オーディオデータの録音及び再生時の経過時間は１１２に表示する。オーディオデータは、マイク１０４によって入力し、またオーディオデータの出力には、スピーカ１０６・ヘッドホン１０７・ラインアウト１０８と複数の出力先がある。これらのオーディオデータの入出力はサウンドデバイス１０５が管理する。１１０のＤＭＡＣにより、再生時はＲＡＭから１０３のバッファメモリであるオーディオＦＩＦＯへデータ転送がなされ、録音時はマイクから入力されたデータをサウンドデバイスでＡＤ変換して、オーディオＦＩＦＯに読み込み、ＤＭＡＣによってＲＡＭに書き込まれる。以上が本発明で用いる携帯端末の基本的なブロック図の説明である。
【００１１】
本発明の情報機器は、デスクトップパソコン、携帯端末、携帯オーディオプレイヤなど本発明のブロックを満たせば様々な機器に応用できる。次に本発明の実施例を説明する。
【実施例１】
【００１２】
本発明の情報機器におけるオーディオデータ再生時の手順について、図２のフローチャートをもとに説明する。この例では、２次記憶装置中の１Ｍｂｙｔｅのオーディオデータを再生する手順とする。ユーザはオーディオデータを再生したい場合、オーディオプレイヤを起動し、再生開始を情報機器に指示する（２０１）。ユーザから再生要求を受け、サウンドデバイス準備処理（２０２）を行う。サウンドデイバス準備処理とは、サウンドデバイスが起動していなければ、サウンドデバイスを起動し、オーディオデータのサンプリング周波数に合わせて、サウンドデバイスのクロックの設定などを行う。オーディオ再生に必要なサウンドデバイスの準備が完了すると、２次記憶装置からＲＡＭへオーディオデータを読み込む（２０３）。この時、１Ｍｂｙｔｅのオーディオデータを一度にＲＡＭへ読み込んでも構わないが、通常は、一定サイズのデータを読み込みながら、順次、再生処理を行う。例えばこの場合は３２ｋｂｙｔｅずつデータを読み込むものとする。２次記憶装置から、ＲＡＭ上へ再生されるデータの読み込みが完了するとＤＭＡＣ準備処理（２０４）を行う。このステップでは、転送データサイズ、転送元アドレス、転送先アドレスの設定、複数のチャンネルをもつＤＭＡＣであれば、この時に使用するチャンネルの設定などを行う。オーディオ再生に必要なＤＭＡＣの準備処理が完了すると、データ転送を開始する（２０５）。ＲＡＭからオーディオＦＩＦＯへデータ転送が開始され、一定時間経過後、オーディオＦＩＦＯからサウンドデバイスへデータが転送され、サウンドデバイスでＤＡ変換されたデータが、スピーカ等の出力デバイスから音声として出力される（２０６）。この時、オーディオＦＩＦＯから一定時間経過後サウンドデバイスにデータが転送されるが、例えばこれはオーディオＦＩＦＯの構成がダブルバッファになっている場合は、片方のバッファがフルになった時、ダブルバッファでない場合は、オーディオＦＩＦＯの半分のサイズ分データが到着した時にサウンドデバイスにデータを転送するのが主流だからである。つまり、ＤＭＡＣによりデータ転送が開始されてから、オーディオＦＩＦＯに一定サイズのデータが到着するまではサウンドデバイスにデータを転送しない。これは、オーディオ出力の速度に対して、ＤＭＡＣのデータ転送が非常に高速であるため、音飛びを防ぎ、タイミングを調整するためでもある。２０４で設定した転送サイズ分（３２ｋｂｙｔｅ）データ転送が終了するまで、２０４、２０５、２０６の処理は繰り返される。３２ｋｂｙｔｅ分の転送が終了すると、２次記憶装置からさらに３２ｋｂｙｔｅ読み込む。以上の処理を１Ｍｂｙｔｅのオーディオデータの出力が終了するまで繰り返す。１Ｍｂｙｔｅ分のオーディオ再生が終了すると、取得したＤＭＡチャンネルの解放やＤＭＡＣドライバが確保したバッファの解放などＤＭＡＣ終了処理を行い（２０９）、次いで、サウンドドライバが確保したバッファの解放などサウンドデバイスの終了処理を行う（２１０）。本発明のオーディオ再生時、一連の処理の流れは以上のようになる。この一連の処理の中で、再生の経過時間を情報機器の表示画面上に出力する。本発明の情報機器はタイマを使用せず、再生の経過時間を取得することが特徴である。オーディオデータの再生の経過時間は、出力データサイズ÷１サンプル当たりのデータサイズ÷チャンネル数÷サンプリング周波数で求められる。例えば、出力データサイズが８８２０００バイト、１サンプル当たりのデータサイズが２バイト、ステレオ（２チャンネル）、サンプリング周波数４４１００Ｈｚであれば、５秒のデータということになる。オーディオデータにはＷＡＶ形式や圧縮データであるＭＰ３など様々なオーディオフォーマットが普及しているが、どの形式のファイルにおいても、１つのファイルでサンプリング周波数は一定である。各ファイルのサンプリング周波数は、ファイル内に書かれているため、ファイルオープン時にオーディオプレイヤはファイルフォーマットを解析し、サンプリング周波数を読み取り、図２のサウンドデバイス準備処理において、サウンドデバイスのクロックを設定する。これにより、あとは出力データサイズが分かれば、再生経過時間を知ることができる。本発明では、出力データサイズを取得するためにＤＭＡＣのカウントレジスタ値を参照する。本発明で用いるＤＭＡＣは内部にＦＩＦＯバッファをもっており、ＲＡＭから転送されるデータは一旦、ＤＭＡＣのＦＩＦＯに入った後、オーディオＦＩＦＯへ転送される。この概略を図３に示す。図３は図１のブロック図の中でＤＭＡＣがデータ転送を行う部分を示している。データ転送が開始されると、ＤＭＡＣは転送元であるＲＡＭ上のデータをＤＭＡＣ内のバッファに一旦格納した後、転送先であるオーディオＦＩＦＯへデータを転送する。例えば、本発明のＤＭＡＣのＦＩＦＯ及びオーディオＦＩＦＯは３２ビット／ワード（４バイト／ワード）を８段備えている。ＤＭＡＣのレジスタには転送ワードをカウントするカウントレジスタを備えているため、転送データサイズをワード単位でカウントすることができる。これにより、再生開始されてから、４バイト単位でデータの転送量を知ることができる。このカウントレジスタ値を読むことにより、１サンプルのデータサイズが２バイト、サンプリング周波数４４１００Ｈｚ、ステレオ２ｃｈのオーディオファイルの場合、約２７マイクロ秒という粒度で再生経過時間を知ることができる。また、ＤＭＡＣがデータ転送を行っている間に、カウントレジスタ値を読めない場合は、ＤＭＡＣの転送を一旦停止して、カウントレジスタ値を読む。これは実施例２で説明するが、オーディオＦＩＦＯはＤＭＡＣからの転送を常に受け付けているわけではなく、オーディオＦＩＦＯ内のバッファの状態によって、ＤＭＡＣからの転送を待つ状態が発生する。この時にＤＭＡＣの転送を一時中止して、その間にカウントレジスタ値を読む。以上のようにオーディオデータを再生中にＤＭＡＣのカウントレジスタ値を読むことにより、再生データサイズを取得し、再生経過時間を非常に小さい粒度で取得することができる。
【実施例２】
【００１３】
前述したように、オーディオ再生においては、ユーザが再生開始を指示してから、データの読み込み、ＭＰ３など圧縮データであればデコード、ＤＭＡ転送、ＤＡ変換等の一連の処理が発生するため、ユーザの再生開始指示と同時に、スピーカ等から音声としてデータは出力されていない。本発明では音声出力とほぼ同時に経過時間表示を開始させる点に特徴がある。以下その方法について説明する。サウンドデバイスにオーディオＦＩＦＯからデータが転送されるのは、オーディオＦＩＦＯに一定サイズのデータが転送された後である。サウンドデバイスでは、データの出力スピードはサンプリング周波数で一定なので、常にサンプリング周波数に同期してデータを供給しなければならない。再生中、音飛びが発生しないために、ＤＭＡＣからオーディオＦＩＦＯへのデータ転送速度はサウンドデバイスの出力スピードより、高速である必要があり、またオーディオＦＩＦＯの音声出力されていないデータを上書きしないようにすべきである。そのために、ダブルバッファを実装したオーディオＦＩＦＯの概略図の一例を図４に、オーディオＦＩＦＯの動作を図５のフローチャートを用いて説明する。図４のオーディオＦＩＦＯは３２ビット／ワード（４バイト／ワード）を８段備えたバッファＡとバッファＢを備えている。再生開始されると最初にバッファＡが一杯になるまでＤＭＡＣからデータが転送される（５０２、５０３）。バッファＡが一杯になると直ちに、サウンドデバイスにデータを出力し、音声が出力され始める。（５０４）。バッファＡが一杯になり音声出力が開始されるとともに、オーディオＦＩＦＯのもう一つのバッファＢに対して、ＤＭＡＣからデータが転送される（５０５）。即ち、バッファＡからサウンドデバイスへデータ出力中に、バッファＢへＤＭＡＣからデータが転送される（５０６）。バッファＢが一杯になると、ＤＭＡＣからのデータ転送は停止し、バッファＡのデータが全て出力されるのを待つ。バッファＡのデータが空になると、既に一杯になっているバッファＢのデータをサウンドデバイスに出力する（５０８）。また同様にバッファＢのデータを出力中に、ＤＭＡＣからバッファＡにデータが書き込まれる。以下同様に、バッファＡとバッファＢに交互にデータ転送を行いながら、音声を出力する。また、図４のようにオーディオＦＩＦＯはダブルバッファ構造になっていなくとも、シングルバッファであっても半分に区切って、同様の処理を行うことは可能である。以上のように図５の処理では、音声出力が開始されるのはオーディオＦＩＦＯのバッファＡが一杯になったときということができる。この処理を図６のフローチャートに示す。すなわちＤＭＡＣからオーディオＦＩＦＯへバッファＡのサイズ分転送されたときに、経過時間表示を開始すれば、ほぼ実時間通りに音声出力と経過時間表示を行うことができる。
【実施例３】
【００１４】
本発明の情報機器におけるオーディオデータ録音時の手順について、図７のフローチャートをもとに説明する。ユーザはオーディオデータを録音したい場合、オーディオプレイヤを起動し、録音開始を情報機器に指示する（７０１）。ユーザから、録音要求を受け、サウンドデバイス準備処理を行う（７０２）。サウンドデバイス準備処理とは、サウンドデバイスが起動していなければ、サウンドデバイスを起動し、サウンドデバイスのクロックを録音するサンプリング周波数に設定する。録音に必要なサウンドデバイスの準備が完了すると、マイクから音声を取り込みを開始する（７０３）。音声取り込み開始後、サウンドデバイスは設定したサンプリング周波数で、録音終了指示があるまで、音声を取り込んでいく。マイクから音声を録音し、サウンドデバイスでＡＤ変換された後、オーディオＦＩＦＯへ転送される。オーディオＦＩＦＯに一定サイズデータが書き込まれると、オーディオＦＩＦＯから、ＲＡＭへＤＭＡＣによるデータ転送を行うため、ＤＭＡＣ準備処理を行う（７０４）。例えば、オーディオＦＩＦＯの構成がダブルバッファになっている場合は、片方のバッファがフルになった後、ダブルバッファでない場合は、オーディオＦＩＦＯの半分のサイズ分データが到着した時にＤＭＡＣ準備処理を開始する。このステップでは、転送データサイズ、転送元アドレス、転送先アドレスの設定、複数のチャンネルをもつＤＭＡＣであれば、この時に使用するチャンネルの設定などを行う。録音に必要なＤＭＡＣ準備処理が終了するとデータ転送を開始する（７０５）。ＤＭＡＣからＲＡＭ上へデータが転送されると２次記憶装置上へファイルとして保存するため、ファイル書き込みを行う。この時、録音するファイルのデータ形式を圧縮データとする場合は、エンコードを行いつつ、ファイル書き込みを行う。通常、録音時はある一定サイズのメモリ容量をＲＡＭ上に確保し、この単位でＤＭＡＣからのデータ転送とファイル書き込みを行っていく。また、録音の場合は実施例１の再生時におけるデータの流れとは逆になる。即ち、サウンドデバイスより入力されたデータはオーディオＦＩＦＯに入力され、オーディオＦＩＦＯよりＤＭＡＣのバッファに一旦格納された後、ＲＡＭへデータが転送される。録音時も再生時と同様に、ＤＭＡＣの転送カウント値を読むことにより、録音の経過時間を知ることができる。例えば図３の構成の場合、１サンプルのデータサイズが２バイト、サンプリング周波数が８０００Ｈｚ、モノラル１ｃｈであれば、約２５０マイクロ秒という粒度で録音経過時間を知ることができる。また、ＤＭＡＣがデータ転送を行っている間に、カウントレジスタの値を読めない場合は、ＤＭＡＣの転送を一旦停止して、カウントレジスタ値を読む。実施例２の再生時の処理と逆で、図４のバッファ構成の場合、録音時はオーディオＦＩＦＯのバッファＡが一杯になったらＲＡＭへデータ転送を開始する。また実施例２の再生時と逆に録音時においてもオーディオＦＩＦＯからＲＡＭへデータ転送する際にオーディオＦＩＦＯのバッファの状態によって、ＤＭＡＣの転送を待つ状態が発生する。つまり、バッファＡにサウンドデバイスからデータを書き込み、バッファＡが一杯になれば、オーディオＦＩＦＯからＲＡＭへデータ転送するとともに、サウンドデバイスはバッファＢにデータを書き込む。バッファＡの転送が終われば、バッファＢが一杯になるまでＤＭＡＣは転送待ちになる。この時にＤＭＡＣ転送を一時中止して、その間にカウントレジスタ値を読む。以上のように、オーディオデータを録音中にＤＭＡＣのカウントレジスタ値を読むことにより、録音データサイズを取得し、録音経過時間を非常に小さい粒度で取得することができる。
【００１５】
これまでＤＭＡＣのカウントレジスタ値を取得して、オーディオの再生または録音の経過時間を取得する方法を３つ述べたが、ＤＭＡＣのカウントレジスタ値ではなく、オーディオＦＩＦＯのカウントレジスタ値を取得して、ＤＭＡＣでの録音及び再生の経過時間の取得方法と同様に再生経過時間を取得することもできる。
【図面の簡単な説明】
【００１６】
【図１】本発明の情報機器のブロック図
【図２】本発明の再生時におけるフローチャート
【図３】本発明のＤＭＡＣにおける再生時のデータ転送の概略図
【図４】オーディオＦＩＦＯのダブルバッファの概略図
【図５】本発明のＤＭＡＣとオーディオＦＩＦＯのデータ転送のフローチャート
【図６】本発明における再生経過時間表示の開始時のフローチャート
【図７】本発明における録音時のフローチャート
【符号の説明】
【００１７】
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＡＵＤＩＯ  ＦＩＦＯ
１０４  マイク
１０５  サウンドデバイス
１０６  スピーカ
１０７  ヘッドホン
１０８  ラインアウト
１０９  ２次記憶装置
１１０  ＤＭＡＣ
１１１  入力デバイス
１１２  ディスプレイ
１１３  システムバス
４０１  オーディオＦＩＦＯ
【図１】
2005182967.tif 000003
【図２】
2005182967.tif 000004
【図３】
2005182967.tif 000005
【図４】
2005182967.tif 000006
【図５】
2005182967.tif 000007
【図６】
2005182967.tif 000008
【図７】
2005182967.tif 000009